gpt4 book ai didi

c - 为什么我的字符串的第一个字母不打印?

转载 作者:行者123 更新时间:2023-11-30 21:16:04 24 4
gpt4 key购买 nike

我正在尝试编写一段代码,要求用户输入他们的名字。然后它应该读取他们名字的每个字符并按照我选择的方式对其进行格式化(在下面的代码中,它在每个字符后添加一个新行)。

我遇到的问题是,当有人输入他们的名字时,它不会打印第一个字母,而是打印其余的字母。

例如,如果我输入 Sneek,它只会显示 neek。

现在我是编程的初学者,对于 C 来说更是如此,所以我想知道我的 scanf 语句或循环是否有问题。

此外,如果我输入 Sneek,它会显示 neek,但如果我再次输入 Sneek,它会将其显示为 Sneek,所以我假设循环没有任何问题?

我已经在这个问题上搜索了很长一段时间,但我似乎找不到任何答案,任何帮助将不胜感激。

char ch;
printf("Please enter name: ");
ch = scanf("%c", &ch);

while ((ch = getchar()) != EOF) {
printf("%c\n", ch);

}
return 0;

最佳答案

代码片段中有多个问题:

  • ch = scanf("%c", &ch); 没有任何作用,甚至没有正确地将文件中的一个字节读入 ch。请注意,scanf 确实将字节存储到 ch 中,但当您将返回值也存储到 ch 中时,它会立即被覆盖。只需删除此行即可。

  • while ((ch = getchar()) != EOF) { printf("%c\n", ch); } 对于您的目的是正确的,但 ch 的类型必须int 而不是 char容纳所有unsigned char 值和特殊值EOF。按照目前的编写方式,在 char 为无符号类型的平台上,您的代码将无法在文件末尾停止。

关于c - 为什么我的字符串的第一个字母不打印?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39897774/

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