我在 C 语言中完全使用 getchar() 已经有一段时间了。在这种情况下,我试图读取一行并将该行的字符放入一个数组中。但是,在将 getchar() 分配给数组后,它会跳过一些字符。
例如输入“It skips every other”输出是...I\n\n k\n p\n\n v\n r\n\n t\n e\n。 (\n 只是代表新行。)
int N = 0;
char message[80] = {};
do
{
message[N] = getchar();
N++;
printf("%c\n", message[N-1]);
}
while(getchar() != '\n');
感谢您抽出宝贵时间,正如之前所说,几乎每次我尝试使用 getchar() 时,它总是会给出一些意想不到的结果。我不完全理解该函数如何读取字符。
最佳答案
您将调用 getchar() 两次,一次在 while 条件中,另一次在 do-while 体内。
试试这个代码:
int N = 0;
#define MAX_SIZE 80
char message[MAX_SIZE] = {};
char lastChar;
do
{
lastChar = getchar();
if (lastChar == '\n')
break;
message[N] = lastChar;
N++;
printf("%c\n", message[N-1]);
}
while(N < MAX_SIZE);
更新: 添加了对数组最大大小的检查,而不是使用无限的 do-while 循环。
关于c - getchar() 跳过 C 中的所有其他字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15105926/