【发布时间】:2016-01-24 20:51:23
【问题描述】:
我正在开展一个项目,您可以在其中输入姓名并打印姓名首字母。当我尝试比较字符串时,出现“预期表达式”错误。我做错了什么?
#include <stdio.h>
#include <stdlib.h>
#include <cs50.h>
#include <string.h>
#include <ctype.h>
int main(void) {
printf("Name: ");
string name = GetString();
printf("\n");
int length = strlen(name);
string compair1 = " ";
for(int l = 0;l<=length;l++) {
char compair2 = name[l];
int res = strcmp(compair1,&compair2);
if(res == 0) {
printf("found blank space");
}
}
}
【问题讨论】:
-
for(int l = 0; name[l];l++) { if(name[l] == ' ') printf("found blank space\n"); } -
您不能只获取单个
char的地址并将其用作strcmp的参数,因为它不是以空值结尾的。通常,这可能会导致分段违规。如果只想比较单个字符,可以使用int res = compair1[0] == compair2; -
“int res = strcmp(compair1, &compair2);”中的作用和作用
-
@MarcusMardis &compair2 表示“compair2 的地址”。因此,您将 strcmp 传递给 char 变量的地址,而 strcmp 将其视为以空字符结尾的字符串的开头,而事实并非如此。
-
你可以see here如何使用strcmp。