1.以字符的形式一个一个的字符读取
如下:
#include<stdlib.h>
#include<stdio.h>
int main(int argc, char const *argv[])
{
char a[100];
int i = 3,m=0; /*i为读取的字符个数,m是将读取到的字符存储在字符串数组中相应的位置
*/
while (i--)
{
printf("请输入字符串");
scanf("%c", &a[m]); //这边scanf是以以字符的形式读取
m++;
}
printf("%s", a);
return 0;
}
这种读取的好处是,不会因为空格、换行等导致读取中断,输入是多少是什么形式,最终显示的就是什么形式;会将空格和换行符也按照Ascall存储进字符数组;如下图:
第一个输入w r中级有一个空格,最后也打印的也是相同的;
第二个输入w和r但是换行了,最后也是打印的换行的;
上述两个说明这种形式将空格和换行都存储进去了;
**
下面这种形式也是经常需要使用的读取输入的形式:
**
在windows下是按Ctrl+z键输入EOF,在Linux中是按下Ctrl+d键输入EOF。
while(scanf("%c",&power[i][j])==EOF)
2.以字符串的形式读取
如下:
#include<stdlib.h>
#include<stdio.h>
int main(int argc, char const *argv[])
{
char a[100];
int i = 2,m=0;
while (i--)
{
printf("请输入字符串");
scanf("%s", a); //以字符串的形式读取
m++;
}
printf("%s", a);
return 0;
}
输出结果如下:
这种形式scanf并不会读取空格和换行等转义字符,它会在空格和换行这些转义字符这里停止读取,相等于它的读取截止;