三种获得字符串的方法的区别: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;
}