getchar()跳过C中的所有其他char

Tre*_*vor 0 c getchar visual-studio-2012

我在C中完全使用getchar()已经有一段时间了.在这种情况下,我试图读取一行并将该行的char放入数组中.但是,在将getchar()分配给数组时,它会跳过一些字符.

例如,输入"它会相互跳过",输出是...... \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n (\n只是代表新行.)

int N = 0;

char message[80] = {};

do
{
    message[N] = getchar();
    N++;
    printf("%c\n", message[N-1]);
}
while(getchar() != '\n');
Run Code Online (Sandbox Code Playgroud)

感谢您的时间,如前所述几乎任何时候我都尝试使用getchar()它总会给出一些意想不到的结果.我不完全理解函数如何读取char.

Tux*_*ude 8

你在while条件下调用getchar()两次,在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);
Run Code Online (Sandbox Code Playgroud)

更新:添加了对数组最大大小的检查,而不是使用无限的do-while循环.

  • 添加一些检查以确保"N <80".我们想避免缓冲区溢出:) (3认同)