一、
char ch;
scanf(“%c”,&ch);
这是最基本的输入一个字符的函数,注意到ch前面有个&,它表示取地址,为什么要带上取地址,很明显嘛,就是你从键盘读入一个字符放到ch的家里面(也就是它的住处嘛),
请记住这个函数的返回值。他返回我们输入的变量的个数。
比如:char ch1,ch2;
intd = scanf("%c%c",&ch1,&ch2);
这时候d的值就是2(因为输入了2个字符嘛)
Intnum;
intd = scanf("%d",&num1);
这时候d的值就是1(因为输入了1个整数嘛)
注意:回车键也是一个字符,只是操作系统隐藏了。有时候我们需要先输入一个整数,然后再输入字符。这就需要先scanf(“%d\n”,&num); 再scanf(“%c”,&ch); 这样我们输入完整数num之后,就不会把我们敲的那一下回车读到ch变量里面。
二.
char ch;
ch = getchar();
这也是输入一个字符的函数,与scanf不同的是,它返回的值是你输入的那个字符。
比如:
char ch = getchar(); 你从键盘输入一个字符a,这时候ch就是你输入的a了。
三.
char ch[10];
scanf(“%s”,ch);
这里大家总是记不住要不要带上&符号,我讲一下为什么不要带&符号,因为ch这是一个数组,大家学了指针与数组这一节就知道如果ch是一个数组,那么ch就表示ch[0]的地址
(也就是&ch[0]),程序要找ch这个字符串,只需要找到ch这个字符串的首地址就可以了。不信大家可以试一下面两种方式
1. char ch[10]; scanf("%s",&ch[0]); printf("%s\n",ch);
2. char ch[10]; scanf("%s",ch); printf("%s\n",ch);
他们是一样的,也就证明了ch就是&ch[0].
注意:
我们用scanf(“%s”,ch)这样读字符串的时候,他是读到你敲空格或者是换行为止。
比如:我们从键盘输入abcde,然后输入一个空格。再继续输入字符串fghij 我们输出那个ch一看,就会发现ch的值是abcde,因为scanf(”%s”)这种格式是读到空格或换行为止的。也就是后面的不会读到ch里面。
四:
char ch[10];
gets(ch);
理解了上面的scanf(“%s”)这种格式之后,gets()就很容易理解了,gets()和scanf()不同的就是它是读到换行为止的,而不是空格。
比如:我们输入字符串abcd,再输入一个空格,接着再输入efg我们用printf(“%s”,ch)一看就会知道输出的是
abcd efg。说明空格也读进去了。