【发布时间】:2012-07-10 03:06:16
【问题描述】:
我的代码中有 2 个 fget,它们都不等待输入...
这是第一个fgets的例子...
printf("Insert path: ");
if(fgets(dirpath, BUFFGETS, stdin) == NULL){
perror("fgets dir path");
close(sockd);
}
而且,正如我之前所写,下一个 fgets 也不在等待我的输入 :(
在第一个 fgets 之前,我有 2 个 scanf("%ms", &string);(如果这可能是麻烦的话)。
【问题讨论】:
-
有什么理由不能再使用
scanf? -
'm'在那个scanf()中做什么?向我们展示真实代码(包括scanf()调用)。 -
另外,查看stackoverflow.com/a/6083941/12711 - 它可能与您的问题有关。请记住,
scanf()中的“%s”格式将在第一个空格处停止读取,将空格留在流中。换行符是一个空白字符。 -
@Arkadiy:你有
m标志字符的文档链接吗?我看到了 GCC C lib 文档中讨论的a标志(对我来说是新的),但不是m标志。您链接到的 SO 问题只是说如果使用足够新的 glibc,您应该使用m而不是a,但没有解释为什么或有什么不同。