C Language Study - gets , getchar & scanf

慢慢的发现C语言功底是如此的薄弱,被这几个字符输入函数搞糊涂了又~~

来,再来忧伤一次吧~

那么,我们从scanf开始:

假如说你要将一串字符输入到一字符数组里,如以下程序,

    char a[2];
    char b[3];

    scanf("%s%s",a,b);
    printf("%s\n%s",a,b);

scanf使用%s接收字符串,但是并不是每一个输入的字符都会被当做字符串处理,空格,tab,换行,都会被残忍的拒绝,因此输入一串“带有空格的字符串”,并且想把它传到字符数组里,使用scanf的话就没那么容易了。因为scanf对这些带空格的拦截,利用此来区分参数对应。

gets函数可以解决这个问题,

char a[10];
gets(a);

完美解决空格被排斥的问题。

但是又要注意了,scanf在使用%c格式符的时候,对于空格的接收是很乐意的。是不是很变态~

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-11 17:18:37

C Language Study - gets , getchar & scanf的相关文章

C Language Study - gets , getchar & scanf

慢慢的发现C语言功底是如此的薄弱,被这几个字符输入函数搞糊涂了又~~ 来,再来忧伤一次吧~ 那么.我们从scanf開始: 假如说你要将一串字符输入到一字符数组里,例如以下面程序, char a[2]; char b[3]; scanf("%s%s",a,b); printf("%s\n%s",a,b); scanf使用%s接收字符串.可是并非每个输入的字符都会被当做字符串处理.空格.tab.换行.都会被残忍的拒绝,因此输入一串"带有空格的字符串"

getchar() 和 scanf("%c")的区别

getchar()和scanf("%c")的功能都是从STDIN读一个字符,单论功能两者没有区别. 但两者的返回值是有区别的: ------------------------------------------------ scanf()的详尽介绍请移步这里. ------------------------------------------------- scanf()的返回值的含义是: On success, the function returns the number of

C Language Study - the use of symbol '##'

## #include <stdio.h> #define INTVARIABLE(n) i##n int main(void) { int INTVARIABLE(2) = 3; printf("i2=%d\n",i2);//output i2=3 i2 = 5; printf("i2=%d\n",i2);//output i2=5 return 0; } C Language Study - the use of symbol '##'

C Language Study - how to use &#39;#&#39;

宏中的#的功能是将其后面的宏参数进行字符串化操作(Stringizing operator),简单说就是在它引用的宏变量的左右各加上一个双引号. 如定义好#define STRING(x) #x之后,下面二条语句就等价. char *pChar = "hello"; char *pChar = STRING(hello); 还有一个#@是加单引号(Charizing Operator) #define makechar(x)  #@x char ch = makechar(b);与ch

C Language Study - 0 &amp; &#39;0&#39; &amp; &#39;\0&#39;

The difference of 0 & '0' & '\0' ------------------------------------------------------------ 0 is a number(decimal). ------------------------------------------------------------ '0' is a char. It's ASCII equal  48(decimal). ----------------------

cin与getchar、scanf之间的区别

cin会忽略空格和回车 getchar与scanf不会忽略回车和空格 // exam1.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; int main(void) { char ch; ch=getchar(); printf("%d\n",ch); cin>>ch; printf("%d\n",ch

输出与输出:putchar() getchar() printf() scanf() puts() gets() sscanf()

C语言中基本的输入输出函数有: putchar ():把变量中的一个字符常量输出到显示器屏幕上; getchar ();从键盘上输入一个字符常量,此常量就是该函数的值; printf ();把键盘中的各类数据,加以格式控制输出到显示器屏幕上; scanf ();从键盘上输入各类数据,并存放到程序变量中; puts ():把数组变量中的一个字符串常量输出到显示器屏幕上; gets ():从键盘上输入一个字符串常量并放到程序的数组中. sscanf(); 从一个字符串中提取各类数据.  putcha

getchar与scanf区别

scanf可以一次按照设定的输入格式输入多个变量数据.如int d,float f,char str[20],scanf("%d%f%s",d,f,str); getchar()只能输入字符型,输入时遇到回车键才从缓冲区依次提取字符. 如char ch;ch=getchar();输入abc\r(回车)ch=a;用在循环时也要等有回车键时才接收. char ch;while((ch=getchar())!='q'){printf("%c ",ch);

getchar(),gets(),scanf()的差异比较

scanf( )函数和gets( )函数都可用于输入字符串,但在功能上有区别.若想从键盘上输入字符串"hi hello",则应该使用gets()函数. gets可以接收空格:而scanf遇到空格.回车和Tab键都会认为输入结束,所有它不能接收空格. char string[15]; gets(string); /*遇到回车认为输入结束,并且回车键用‘\0’代替*/ scanf("%s",string); /*遇到空格认为输入结束*/ 所以在输入的字符串中包含空格时,