三种获得字符串的方法的区别:scanf gets getchar

版权声明:共同提高:) https://blog.csdn.net/u011436427/article/details/82432351

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

猜你喜欢

转载自blog.csdn.net/u011436427/article/details/82432351