我经常看到人们不鼓励其他人使用scanf并说有更好的选择。但是,我最终看到的只是“不要使用scanf”或“这里是正确的格式字符串”,并且从来没有提到“更好的替代方案”的任何示例。
例如,让我们看一下这段代码:
scanf("%c", &c);
Run Code Online (Sandbox Code Playgroud)
这将读取最后一次转换后留在输入流中的空白。通常建议的解决方案是使用:
scanf(" %c", &c);
Run Code Online (Sandbox Code Playgroud)
还是不使用scanf。
由于scanf不好,用于转换scanf通常无需使用即可处理的输入格式(例如整数,浮点数和字符串)的ANSI C选项有哪些scanf?
我有一个C代码,我在ctype.h中使用标准库函数isalpha(),这是在Visual Studio 2010-Windows上.在下面的代码中,如果char c为'£',则isalpha调用将返回一个断言,如下面的快照所示:
char c='£';
if(isalpha(c))
{
printf ("character %c is alphabetic\n",c);
}
else
{
printf ("character %c is NOT alphabetic\n",c);
}
Run Code Online (Sandbox Code Playgroud)
我可以看到这可能是因为8位ASCII没有这个字符.
那么如何处理ASCII表外的非ASCII字符呢?
我想要做的是,如果找到任何非字母字符(即使它包含不在8位ASCII表中的字符),我希望能够忽略它.
有人可以就 scanf 提出建议吗?“message”是一个 4 行 x 16 列的数组。用户输入数字(全部为 1 位整数)后,按“Enter”键时会出现错误消息。正如所说 - 可能与 scanf 有关。
for (int i = 0; i < M; i++) {
for (int j = 0; j < columns; j++) {
scanf("%d", message[i][j]);
}
}
Run Code Online (Sandbox Code Playgroud)