一文搞懂scanf()读取字符%c | 您所在的位置:网站首页 › scanf输入多个 › 一文搞懂scanf()读取字符%c |
scanf()函数
scanf的使用
scanf()函数使用空白(换行符、制表符和空格)把输入分成多个字段。在依次把转换说明和字段匹配时跳过空白。示例如下: #include int main() { int a=10; char ch[30];// 字符数组 scanf("%d",&a); scanf("%s",ch); printf("a=%d \nch=%s",a,ch); }首先看一个例子 #include int main() { int a=10; char s1[30];// 字符数组 char s2[30]; scanf("%d",&a); scanf("%s",s1); scanf("%s",s2); printf("a=%d \ns1=%s \ns2=%s",a,s1,s2); }以输入整形为例,如果在输入整数a时,输入了非整数其他字符会怎样呢? 在介绍scanf怎么读取输入时,有没有注意到s1读取到的是第二块空格前的内容,而不是后面的整个字符串”acm ACM"。 观察例子的两者有什么不同? scanf("%d%d", &n,&m) scanf("%d %d", &n,&m) 表面上,在第二个scanf中转换说明之间存在空白本质上,没有任何区别。格式字符串中的空白意味着跳过下一个输入项前面的所有空白。 因此,scanf(“%d%d”, &n,&m)与scanf(“%d %d”, &n,&m)的行为相同。 那么问题来了,如果现在要使用scanf读取一个整数和一个字符,代码怎么写? #include int main() { char ch; int a; scanf("%d",&a); scanf("%c",&ch); printf("a=%d,ch=%c",a,ch); }
怎么解决?所以对于%c,如果把%c放在格式字符串中的空格前面,scanf()便会跳过空格,从第1个非空白字符开始读取。 #include int main() { char ch; int a; scanf("%d",&a); scanf(" %c",&ch); printf("a=%d,ch=%c",a,ch); }
|
CopyRight 2018-2019 实验室设备网 版权所有 |