繁体   English   中英

C Scanf突然停止读取值

[英]C Scanf suddenly stopped reading in values

我正在尝试在Mac上运行一个简单的C程序。 它工作了一会儿,但是突然scanf停止了工作。 我基本上想读取一个整数值并输出输入的内容。 无论我输入的整数是什么,程序始终输出0。我在这里尝试了建议但没有任何效果。 我试过在终端和xcode中都运行该程序,但还是没有。 有任何想法吗?

#include <stdio.h>

int main(){
  int numberOfElements = 0;
  scanf("Number of elements: %d",&numberOfElements);
  printf("%d\n",numberOfElements); //keeps returning 0 no matter the number I enter
  return 0;
}

您必须打印提示,并且仅扫描输入:

printf("Number of elements: ");
fflush(stdout);
scanf("%d", &numberOfElements);

通常,最好避免直接使用scanf() 相反,您可以获取一行输入,然后对检索到的字符串使用sscanf()以更好地控制错误。

char line[MAX_LINE];
if (fgets(line, sizeof(line), stdin) != NULL) {
    if (sscanf(line, "%d", &numberOfElements) != 1) {
        printf("You didn't input a number: %s", line);
        /* ... */
    }
}

您不应在scanf语句中具有Number of elements: scanf 您要将scanf语句更改为:

printf ( "Number of elements: " );
scanf ("%d", &numberOfElements );

当在scanf/fscanf/sscanf格式字符串中包含任何非格式字符时,这意味着您要求这些字符出现在输入流中(如果是sscanfsscanf输入字符串)。 如果输入中不存在这些字符,则scanf失败。 尽管空格字符具有特殊含义,但会导致scanf跳过所有空格,但不需要任何空格。

因此,为了使此scanf成功

scanf("Number of elements: %d", &numberOfElements);

你必须输入

Number of elements: 10

要么

Numberof    elements:10

要么

Numberofelements:    10

或类似的东西。 也就是说,您还必须输入单词Numberofelements: 如果仅输入10 ,则scanf将失败,因为仅有10与请求的格式不匹配。

我确定这不是您的意图。 显然,您真正想做的是使用printf打印提示,然后做一个简单的

scanf("%d", &numberOfElements);

scanf的上述功能可能很有用,但可能仅在少数情况下有用。 这意味着当您看到任何scanf格式字符串的非格式文本时,很可能出现问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM