为什么我的字符串比较失败?

fri*_*nds 3 c

假设我有以下代码和输出:

for (j = 0; j <= i; j++) 
    printf("substring %d is %s\n", j, sub_str[j]);
Run Code Online (Sandbox Code Playgroud)

输出:

substring 0 is max_n=20
substring 1 is max_m=20

现在我只想打印一些子串.但是,如果我尝试有条件地这样做:

for (j=0; j <=i; j++) {
   if (sub_str[j] == "max_n=20") {
      printf("substring %d is %s\n", j, sub_str[j]);
   }
}
Run Code Online (Sandbox Code Playgroud)

我根本没有输出.我的代码出了什么问题?

Sta*_*key 7

你不能==用来比较C中的字符串.你必须使用strcmp.

for (j=0; j<=i; j++) { 
   if (strcmp(sub_str[j], "max_n=20") == 0) { 
      printf("substring %d is %s\n", j, sub_str[j]); 
   } 
} 
Run Code Online (Sandbox Code Playgroud)


kgi*_*kis 5

您无法将C中的字符串与==运算符进行比较.您需要使用strcmp函数或strncmp.

  • "这有时*更安全".有时更危险,因为它更难正确使用. (4认同)