【发布时间】:2014-04-07 19:01:55
【问题描述】:
我用 C 语言编写了一个读取字符数组的程序。它不能正常工作。
#include <stdio.h>
int main()
{
char a[50];
int n, i;
scanf("%d", &n);
for(i=0; i<n; i++)
scanf("%c", a+i);
for(i=0; i<n; i++)
printf("%c ", *(a+i));
return 0;
}
这个程序没有读取我想要的字符。
输入
5
a b c d e
程序打印
a b
当我将 scanf("%c", a+i) 更改为 scanf(" %c", a+i) 时,它运行良好。
有人能解释一下为什么第一个代码没有按我的意愿工作吗?
【问题讨论】:
-
这是 C 代码,不是 C++....
-
您可能想研究
scanf()、空格消耗,以及在使用前者时导致后者的问题。 -
阅读 Scanf 手册说:“一系列空白字符(空格、制表符、换行符等;参见 isspace(3))。该指令匹配任意数量的空白,包括没有,在输入中。” 一个很好的学习链接C Printf and Scanf Reference
-
也更好
scanf("%d\n", &n);“吃”缓冲新行
标签: c arrays character printf scanf