【发布时间】:2016-10-06 13:48:18
【问题描述】:
我正在尝试编写一段代码,要求用户输入他们的姓名。然后它应该读取他们名称的每个字符并按照我的选择对其进行格式化(在下面的代码中,它在每个字符之后添加一个新行)。
我遇到的问题是,当有人输入他们的名字时,它不会打印第一个字母,而是打印出其余的字母。
例如,如果我要输入 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;
【问题讨论】:
-
getchar有意返回int,而不是char!ch = scanf(..., &ch)完全错误。阅读您使用的函数的文档! -
接受的答案与副本中的相同。因此,这个问题应该作为一个副本关闭。