使用strcmp逐个比较字符数组中的字符

Comparing chars one by one in a character array with strcmp

我正在编写一个 C++ 脚本,使用 strcmp() 一个一个地比较两个字符串的字符。 我写了这段代码:

        char test1[1];
        char test2[1];
        test1[0]=str1[i];  //str1 is a char array
        test2[0]=str2[i];  //str2 is a char array
        int result=strcmp(test1,test2); 

但是如果我打印 test1 或 test2,我遇到了两个字符。 例如,如果 str1='a' 的第一个索引,那么 test1 是“aa”,但我不知道为什么? 请帮助。

strcmp() 采用 以空字符结尾的 字符串,但是您的 char[] 数组都不是以空字符结尾的。

char test1[2]; // <-- increase this!
char test2[2]; // <-- increase this!
test1[0] = str1[i];
test1[1] = '[=10=]'; // <-- add this!
test2[0] = str2[i];
test2[1] = '[=10=]'; // <-- add this!
int result = strcmp(test1, test2); 

否则,您可以使用 strncmp() 代替,它不需要空终止符,因此不需要 char[] 数组,例如:

char test1 = str1[i];
char test2 = str2[i];
int result = strncmp(&test1, &test2, 1);

或者简单地说:

int result = strncmp(&str1[i], &str2[i], 1);
// or:
// int result = strncmp(str1+i, str2+i, 1);