三种获得字符串的方法的区别:scanf gets getchar
1)使用scanf("%s",&s) 函数输入字符串时存在一个问题,就是如果输入了空格会认为字符串结束
2)gets()函数将接收输入的整个字符串直到遇到换行为止
char src[100];
gets(src);
上述的两者在接受字符串时:
a.不同点: scanf不能接受空格、制表符Tab、回车等; 而gets能够接受空格、制表符Tab和回车等;
b.相同点: 字符串接受结束后自动加'\0'。
3)
getchar()是在输入缓冲区顺序读入一个字符(包括空格、回车和Tab) getchar()使用不方便,解决方法:
使用下面的语句清除回车: while(getchar()!='\n');
具体的实例:
gets获取字符串代码
#include<stdio.h>
int main()
{
char src[100];
printf("input a string:");
gets(src);
printf("src = %s\n",src);
return 0;
}
使用getchar()获取字符串
#include<stdio.h>
int main()
{
char ch;
char src[10];
int i = 0;
while((ch = getchar()) != '\n')
{
src[i] = ch;
i++;
if(i == 9)
{
printf("error!\n");
exit(1);
}
src[i] = '\0';
}
return 0;
}
scanf的输入数组的方法
1)
#include<stdio.h>
int main()
{
int a[3];
int i;
int *p = a;
for(i = 0; i <= 2; i++)
{
scanf("%d",p++);//不可以用a++ 是因为a是常量不可以自加,*p = a 指针可以自加 p++
}
p = a;
for(i = 0;i < 3; i++)
{
printf("a[%d] = %d\n",i,*(p + i));
}
return 0;
}
2)
#include<stdio.h>
int main()
{
int a[3];
int i;
for(i = 0; i <= 2; i++)
{
scanf("%d",&a[i]);
}
p = a;
for(i = 0;i < 3; i++)
{
printf("a[%d] = %d\n",i,a[i]);
}
return 0;
}
3)
#include<stdio.h>
int main()
{
int a[3];
int i;
for(i = 0; i <= 2; i++)
{
scanf("%d",a+i);
}
p = a;
for(i = 0;i < 3; i++)
{
printf("a[%d] = %d\n",i,*(a + i));
}
return 0;
}