使用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);
我正在编写一个 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);