我已将代码最小化为重现此错误所需的代码。我有一个我认为非常好的 if 语句,但 gcc 坚持认为它不是一个有效的语句。
#define SOMECHAR *
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
char* my_string = (char*) malloc(sizeof(char[5]));
strcpy(my_string, "aa*a");
int i;
for (i=0; i< sizeof(my_string); i++){
if(strcmp(&my_string[i], SOMECHAR) == 0){
printf("%s", "b");
} else {
printf("%s", &my_string[i]);
}
}
}
最佳答案
首先,size_of(my_string)
是指针的大小,而不是它指向的数组的大小。
接下来,strcmp(&my_string[i], SOMECHAR)
将扩展为 strcmp(&my_string[i], *)
,您需要:
#define SOMECHAR "*"
但是,我相信您想要这个:
if(my_string[i] == '*'){
putchar('b');
} else {
putchar(my_string[i]);
}
正如 M.M 在评论中所说,你泄漏了分配的内存
如果您确实需要定义该角色,只需执行以下操作:
#define SOMECHAR '*'
/*some other code */
if(my_string[i] == SOMECHAR){
putchar('b');
} else {
putchar(my_string[i]);
}
关于c - if 语句看起来可以接受,但有错误 : expected expression before ‘)’ token,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40414539/