Tag: scanf

格式与文件内容不匹配时fscanf的行为

如果文件的内容与传递给fscanf的格式字符串不匹配,那么在下次调用fscanf时会发生什么? 假设一个文件包含以下两行: 9000 pig dog 4 5 2 程序试图解析打开的文件( fp ): int a = 1, b = 1, c = 1; int x = 1, y = 1, z = 1; fscanf(fp, “%d %d %d”, &a, &b, &c); fscanf(fp, “%d %d %d”, &x, &y, &z); 我怀疑a现在会持有9000而b和c继续保持值1 – 但是x , y和z会发生什么? C99标准是否保证x , y和z保持值4和2 – 或者文件流的位置指示器保证在解析失败后保持不变,导致x保持值9000而y和z保持值1 […]

scanf on非STDIN输入

是否可以在输入上运行scanf ,它不是STDIN? 我的意思是如果我有一个string=”hello 1 2 3″ ,我可以在它上面运行scanf来提取字符串和三个整数吗? 还有其他function可以做到这一点吗?

当格式字符串以换行符结尾时,scanf的行为是什么?

对于以下代码:(假设已定义x) scanf(“%d\n”, &x); printf(“foo”); 如果我按1和ENTER,我希望程序打印foo,但事实并非如此。 我必须按1,ENTER,2,ENTER才能看到它打印foo。 现在的问题是为什么我需要输入一些东西加上另一个ENTER来使scanf返回? 这可能不是scanf只需要比格式字符串多一个ENTER,因为按1,ENTER,ENTER也不会工作。 实际上,无论我输入多少个ENTER,scanf都会一直等待,直到我输入其他东西。 我在Visual Studio 2010和MinGW中尝试过这个例子,他们产生了相同的结果。 那怎么解释呢? 这是Windows特有的吗? 或编译器依赖? 或者只是这种scanf的使用会产生不确定的行为?

使用fgets和sscanf进行意外重复

这是我的代码的一部分。 gets和sscanf的目的是扫描由一个空格分隔的三个变量。 如果通过,则再次输出指令。 否则,输出错误并退出程序。 我想使用7长度字符数组来限制行中的数字,只获得类似’g 3 3’的格式。 但是我的代码似乎有些不对劲。 #include int main (void) { char line[7]; char command; int x, y; while(1){ /* problem: g 4 4 or g 4 4 can also pass */ fgets(line, 7, stdin); nargs = sscanf(line, “\n%c %d %d”, &command, &x, &y); if(nargs != 3){ printf(“error\n”); return 0; } printf(“%c %d […]

在C中使用scanf进行解析

我是第一次学习C语言。 我有一个指向一个名为goalie_stat的字符串的指针(见下文)。 我如何使用scanf来解析保存百分比,即933,然后将933分配给变量然后最终打印出来? char *goalie_stat = “PatRoy 2.28 933 35 12 165 199 4 5500” char save_p = scanf(“%[13-15]”, goalie_stat); printf(“%s”, save_p); ‘933’是字符串的第13,14和15个字符,但我知道这是不正确的

C中的fscanf csv未分配值

我试图创建一个文件来读取包含CSV的文本文件。 但是出于某种原因,一些Fscanfs不会返回值,但有些值会返回。 FILE* reader; char OptionOne[30]=””; char OptionTwo[30]=””; char OptionThree[30]=””; char OptionFour[30]=””; char answer[1]=””; char CorrectAnswer[1]; char Question[51]; reader = fopen(“C:\\Users\\Finley\\Desktop\\Programming\\QuizMachine\\QuizMachine\\fscanf_questions.txt”, “r”); if (reader == NULL) { printf(“Unable to Open File: %s\n”, FileName); } fscanf(reader, “%[^,],”, Question); fscanf(reader, “%[^,],”, OptionOne); fscanf(reader, “%[^,],”, OptionTwo); fscanf(reader, “%[^,],”, OptionThree); fscanf(reader, “%[^,],”, OptionFour); fscanf(reader, “%[^,],”, answer); 为什么第一个fscanf返回一个值,但所有其他值都没有返回值。 我看不到任何东西,它们看起来都是一样的同样的格式文件格式是这样的: 你用什么函数打开文件?,fscanf,fclose,fopen,main,3 […]

编写我的第一个C程序,我无法通过这个愚蠢的错误

我正在使用xCode,因为我发现调试器非常有用。 所以在我看到的调试器中,输入学生名称[0] = \ 0无论如何。 但其余的名称将是正确的。 例如,如果我放约翰,它会回来说\ 0,o,h,n。 请帮忙? char name[MAX_NAME_LENGTH]; char department[MAX_DEPT_LENGTH]; int rank; int empty = 0; printf(“\nPlease enter the students name: “); scanf(“%s”, &name); printf(“\nPlease enter the students department: “); scanf(“%s”, &department); printf(“\nPlease enter the students rank: “); scanf(“%d”, &rank); strcpy(studentArray[empty].name, name); strcpy(studentArray[empty].department, department); studentArray[empty].rank = rank;

当我给scanf()一个非数字作为输入时,如何继续循环?

我找到了一个简单的例子。 这里它将从用户获取整数值并显示该值。 当我提供字符输入而不是整数时,我想跳过该过程并再次询问用户输入。 为此,我在下面的代码中写了这个,但是当我给出一个字符输入时它会继续循环,但是在继续时它不会向用户询问输入。 请给出一个解决方案。 #include int main() { int n; while(1){ if(scanf(“%d”,&n)==0){ printf(“Error:Checkyour input\n”); continue; } printf(“the input =%d\n”,n); } } 输出如下: Error:Checkyour input Error:Checkyour input Error:Checkyour input Error:Checkyour input Error:Checkyour input Error:Checkyour input

sscanf直到它达到逗号

我正在尝试扫描字符串中的单词和数字,如下所示:“ hello,world,I,287876,6.0 ”< – 此字符串存储在char数组中(字符串)我需要做的就是将事情分开并将它们分配给不同的变量,这样就好了 char a = “hello” char b = “world” char c = “I” unsigned long d = 287876 float e = 6.0 我知道常规scanf在到达空白区域时停止从stdin读取。 所以我一直在想,有可能让sscanf在达到“,” (逗号)时停止阅读 我一直在探索图书馆,找到sscanf的格式,只读字母和数字。 我找不到这样的东西,也许我应该再看一次。 有帮助吗? 提前致谢 :)

Scanf_s保持返回\ 0而不是输入

在我看来,我已经陷入了一个非常简单的任务。 我编写了一个程序,可以选择一个随机数,并让你猜出它是哪一个,如果输入字符’n’或’N’,则退出程序。 代码如下: #include #include #include int input_switcher(int input, int answer) { if (input == answer) {return 1;} else if(input answer) {return 3;} else {return 0;} } int main(void) { int input, answer, tries; char keepGoing = ‘J’; srand((int)time(0)); while(42) { input = 0, tries = 0; answer = 1;//rand()%100+1; printf(“Jag \”t\x84nker\” p\x86 ett tal […]