输出与c中的strcmp()函数不匹配

时间:2016-04-25 15:13:26

标签: c++ fgets cin strcmp

为了通过strcmp()函数比较两个字符串,我按fgets()cin获取了一个输入字符串,另一个在函数中作为默认参数给出。但是当我通过strcmp()比较它们时,功能输出不匹配。

    char a[20];
    int b;
    cin>>a;
    b=strcmp(a,"ab");
    cout<<b;

我将输入a作为abb的值为0,这是完全正常的。但是当{{1}为同一输入时然后fgets()输出与以前不一样。

strcmp()

其中char a[20]; int b; fgets(a,sizeof(a),stdin); b=strcmp(a,"ab"); cout<<b; 的值为aab的值为1.为什么?这是编译器问题还是其他什么?

1 个答案:

答案 0 :(得分:1)

fgets()不会删除任何换行符,每个部分 7.21.7.2 fgets the C standard的功能

  

fgets函数最多读取的数量少于1   由n指向的流stream指定的字符   进入s指向的数组。不会读取其他字符   在换行符后(保留)或文件结束后。   在最后一个字符读取后立即写入空字符   进入阵列。