我曾认为strcmp函数应该在第一个字符串大于第二个字符串时返回正数。但是这个程序
#include <stdio.h>
#include <string.h>
int main()
{
char A[] = "A";
char Aumlaut[] = "Ä";
printf("%i\n", A[0]);
printf("%i\n", Aumlaut[0]);
printf("%i\n", strcmp(A, Aumlaut));
return 0;
}
输出结果为65
、-61
和-1
。
为什么会这样呢?我有什么遗漏的地方吗?
我以为可能是因为保存为UTF-8格式导致的。你知道,因为Ä
在那里由2个字符组成。但是,使用8位编码并确保两个字符串都具有长度为1并没有帮助,最终结果是相同的。
我做错了什么?
在此使用的是32位Linux下的GCC 4.3,如果有影响的话。
%c
以获得正确的结果。 - Philip