【问题标题】:fgets reading previous line before inputfgets 在输入前读取前一行
【发布时间】:2015-10-15 09:50:46
【问题描述】:

当我输入一个输入时,问题会重复,然后我才能输入一个字符串。

printf("Enter %d coefficients starting from the 0th degree.\nSeparate them by commas: ", degree+1);
fgets(coeffs_string, MAX, stdin);
for(i=0;i<strlen(coeffs_string);i++){
    if(coeffs_string[i]==','){
        commas++;
        continue;
    }
    else if(isdigit(coeffs_string[i]) || coeffs_string[i]==' ')
        continue;
    else{
        printf("\007Error! A character was found during the input!\n");
                coeffs_string[0]='\0';
        commas=0;
        break;
    }
}

此外,即使我输入正确的输入,它也会打印错误处理程序。我尝试使用 scanf 但它只是停止了。有没有办法让 fgets 或 scanf 不快速读取输入? *编辑:对不起:我忘记了我的代码的某些部分

【问题讨论】:

  • 你的意见是什么,ceoffs_string?你能发布更完整的代码吗?
  • 只是看标题,所以这是一个猜测:混合scanf()fgets() ...而且显示的代码不完整。

标签: c string fgets


【解决方案1】:
  1. 尝试在您的 printf()fgets() 声明。或者,在与输出不同的行中获取输入。
  2. fgets() 返回的字符串将包含 用户通过按回车键生成的行终止符 钥匙。您没有明确处理这些字符,因此将始终显示错误消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    • 2014-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多