Tag: scanf

我可以在scanf中使用指针来获取数组中的输入吗?

我想在c中这样做: scanf(“%d”,a+i); 其中a是大小为10的数组。 而i反对循环。 这可能吗?

使用sscanf解析文本文件的整数和浮点值

我想用这些字段解析这样一个文件到整数和浮点变量,我试图用fscanf,strtok,sscanf来做这个。 但它们都不起作用! 文件的某些行: fed18 5.7 12.7 144997 8087 267345 100776 fedora18 24.9 25.3 253566 10501 126282 118157 fed18 5.9 12.7 145005 8094 267345 100785 fedora18 23.3 25.3 253576 10507 126282 118169 fed18 6.2 12.7 145013 8100 267345 100789 运行以下代码返回错误的值! 我不知道我搜索的问题是什么,每个人都使用这样的代码,它适用于他们! while(fgets(str,512,fp)!= NULL)//read file line by line { char *tokenstring = str; uint64_t netrx,nettx,vbd_rd,vbd_wr; double cpu, […]

在scanf获得意外数据后,C程序无限循环

我有一个程序,我希望输入整数在2到64之间,所以我把scanf放在do { … } while循环中。 这是我最初测试的代码: int initialBase; do { printf(“Initial base: “); scanf(“%i”, &initialBase); } while (initialBase 64); 问题是每当输入不是有效整数时,它只是无限地输出printf语句而不再提示用户输入,立即充斥控制台。 为什么会发生这种情况?阅读满足我想要条件的输入的更好方法是什么?

使用fscanf_s时访问冲突

我想以特定格式读取文件,因此我使用fscanf_s和while循环。 但是一旦处理了fscanf_s,程序就会发生访问冲突(0xC0000005)崩溃。 这是代码: FILE *fp; errno_t err = fopen_s(&fp, “C:\\data.txt”, “r”); if (err != 0) return 0; int minSpeed = 0; int maxSpeed = 0; char axis = ‘@’; while(!feof(fp)) { int result = fscanf_s(fp, “%c;%d-%d\n”, &axis, &minSpeed, &maxSpeed); if (result != 3) continue; } fclose(fp); 该文件的内容是基于行的,例如: -;10000-20000 X;500-1000 S;2000-2400 有人能帮助我吗?

C循环打印字符串两次? (使用scanf(“%c”))

抱歉可能是愚蠢的问题,但我想练习循环并提出这个想法。基本上它要求你进入或不进入循环,当你进入时,它会要求你做点什么。问题就在我进入循环之后,它打印两次printf字符串,然后传递给scanf并等待输入。 我无法弄明白。 欢迎大家帮忙! 这是代码: #include int main() { char check = ‘a’; char int_check = ‘a’; int b = 0; printf(“want to go in? [y or n]\n”); scanf(“%c”,&check); if ( check == ‘y’) { while (1){ printf(“Waiting: \n”); scanf(“%c”,&int_check); if ( int_check == ‘q’){ printf(“You’re out, bye!\n”); break; }; }; } else if ( check […]

scanf格式说明符,用于从一组字符中读取零个或多个字符

对于可以在读取字符串中的字符,我需要非常严格。 我有一系列的空格,后跟一个字符,后跟一系列空格。 示例: ” c ” , “c” , “” , ” ” 我需要找到一个格式说明符,允许我忽略该字符,但只有当它是这个特殊字符而不是任何其他字符时。 应该中止该序列” e ” 。 我尝试了” %*[c] “但我的unit testing在某些情况下失败 – 让我相信” %*[c] “正在寻找一个或多个’c’而不是零或更多’c’ 。 我写了一个小例子来帮助更好地说明我的问题。 请记住,这只是一个最小的例子。 核心问题是我如何解析零或一个单个字符的数量。 #include #include unsigned match(const char * formula){ unsigned e = 0, found = 0, s; char del; int parsed, pos, len = (int) strlen(formula); const […]

一旦输入已经在C中获得,则忽略该行的其余部分

给出如下输入: 6 2 1 2 3 4 5 6 4 3 3 4 5 6 第一行中的第一个数字是行中的变量数,第二个是行数。 如何才能获得前n/2值,其中n是一行中的值的数量并跳到下一行?

使用sscanf解析字符串

在C89模式下使用gcc(GCC)4.6.2。 我想知道我的sscanf是否已正确实施? 我试图从这个包含在元素中的SDP字符串中获取端口号,端口号是’49462’。 m=audio 49462 RTP/AVP 0 8 我正在使用这样的sscanf : sscanf(element, “%*s %d”, &sdp.audio_port); 所以它将忽略第一个字符串部分’m = audio’,然后获取端口号,这就是我想要的。 端口号后面的字符串的最后部分可以忽略。 实际上可以指定更多的音频格式,即0 8 94 101等。因此字符串长度可以validation。 但是,它只是我感兴趣的音频端口,没有别的。 我是否需要为字符串的其余部分指定任何格式? 我得到了一些记忆问题,我想知道这是否可能是原因。

用scanf()读取字符

此代码适用于掷骰子游戏 。 #include #include #include #include int roll_dice(void); bool play_game(void); int main() { int i, ch,win = 0,lose = 0; bool flag; srand((unsigned)time(NULL)); do { flag = play_game(); if(flag) { printf(“You win!”); win++; } else { printf(“You lose!”); lose++; } printf(“\n\nPlay again(Y/N)? “); scanf(“%c”, &ch); ch = getchar(); printf(“\n”); }while(ch == ‘Y’ || ch == […]

如何确定scanf是否读取格式中指定的内容?

我有一个定义变量int data 该程序使用scanf(“%d”,&data)从stdin读取数据。 如果来自stdin的数据不是整数,我必须打印错误消息。 我试过if(scanf(“%d”,&data) ==EOF){ printf(“error”);return 1;} 它对我不起作用。 那么,我如何确定scanf是否失败或成功?