我试图从用户那里获取一些数据并将其发送到gcc中的另一个函数.代码是这样的.
printf("Enter your Name: ");
if (!(fgets(Name, sizeof Name, stdin) != NULL)) {
fprintf(stderr, "Error reading Name.\n");
exit(1);
}
Run Code Online (Sandbox Code Playgroud)
但是,我发现它最后有一个换行符\n.所以,如果我输入John它最终发送John\n.如何删除它\n并发送正确的字符串.
我经常看到人们不鼓励其他人使用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?
给定未知长度的用户输入(由最大长度为 100 的单词组成)。有没有办法逐个字符串动态读取它?
我的理解是 scanf 读取一个字符串直到到达一个空格,所以我尝试使用 scanf 但它进入了一个无限循环。
char buf[101];
while (scanf("%s", buf))
{
//something is done with the string
}
Run Code Online (Sandbox Code Playgroud) 与此相关的问题: 如何读取未知长度的输入字符串?
几个问题:
这条线if(!str)return str是什么意思?
为什么是int ch整数?它不应该是一个炭?
size完全给定函数的目的是什么?
问一个单独的问题因为我理解了这个方法,而不是引擎盖下的一些东西.
我有一个如下的C代码:
char* text;
get(text); //or
scanf("%s",text);
Run Code Online (Sandbox Code Playgroud)
但是我试着把它打破了.因为我没有给出尺寸text.
为什么我没有给出大小text,因为我不知道用户要输入的文本大小.那么,在这种情况下我能做些什么呢?如果我不知道字符串的长度,我该如何阅读文本?