为了通过strcmp()
函数比较两个字符串,我按fgets()
和cin
获取了一个输入字符串,另一个在函数中作为默认参数给出。但是当我通过strcmp()
比较它们时,功能输出不匹配。
char a[20];
int b;
cin>>a;
b=strcmp(a,"ab");
cout<<b;
我将输入a
作为ab
,b
的值为0,这是完全正常的。但是当{{1}为同一输入时然后fgets()
输出与以前不一样。
strcmp()
其中char a[20];
int b;
fgets(a,sizeof(a),stdin);
b=strcmp(a,"ab");
cout<<b;
的值为a
且ab
的值为1.为什么?这是编译器问题还是其他什么?
答案 0 :(得分:1)
fgets()
不会删除任何换行符,每个部分 7.21.7.2
fgets
the C standard的功能:
fgets
函数最多读取的数量少于1 由n
指向的流stream
指定的字符 进入s
指向的数组。不会读取其他字符 在换行符后(保留)或文件结束后。 在最后一个字符读取后立即写入空字符 进入阵列。