gpt4 book ai didi

c - 为什么 getchar() 在 printf 语句后读取 '\n'?

转载 作者:行者123 更新时间:2023-12-03 23:55:45 25 4
gpt4 key购买 nike


我提示用户输入数组的长度,用这个输入初始化一个 char[] 数组,然后提示用户输入一条消息以输入 char[] 数组。

我正在使用 getchar() 读取用户消息的第一个字符。

但是,getchar() 在读取任何用户输入之前读取换行符 '\n'。它似乎是从前面提示用户的 printf 语句中获取 '\n' ...


以下是相关代码:

#include <stdio.h>

int main(void) {

int len = 0,
originalLen = 0;

printf("\n\nWhat is the length of the array? ");
scanf("%d", &originalLen);
char str[originalLen]; // intitializing the array

printf("Enter a message to enter into the array: ");
char target = getchar();
str[len] = target;

// why is getchar() reading '\n'?
if (target == '\n') {
printf("\n...what happened?\n");
}
return 0;
} // end of main


最佳答案

这是因为之前的scanf并没有读取数字后面的换行符。

这可以通过两种方式解决:

  1. 使用例如getchar 来读取它
  2. scanf 格式后添加一个空格(例如 scanf("%d ", ...))

关于c - 为什么 getchar() 在 printf 语句后读取 '\n'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14765226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com