我是C的新手,我需要帮助。 这段代码不起作用,即使我输入伦敦输入我收到来自其他的消息:“再试一次”。
int main()
{
char capitalCity;
scanf("%s", &capitalCity);
if (capitalCity == 'London'){
printf("Is the capital city of UK.");
}
else{
printf("Try again.");
}
return 0;
}
答案 0 :(得分:1)
C编程语言中没有string
数据类型。 C中的Strings
表示为字符数组。
在C中,char
是表示字符的数据类型(C中的 char 表示字符类型,适用于存储简单字符 - 传统上是ASCII编码中的字符。) 。因此,您需要做的就是声明一个char数据类型数组来表示C中的string
。该数组中的每个元素都将包含字符串的字符。
此外,C中的运算符= =,!=,+ =,+是为C中的内置数据类型定义的,因为C中没有运算符重载,所以不能将这些运算符与C一起使用-String as C-Strings不是C编程语言中的内置数据类型。
注意:C-Strings实际上是以Null结尾的char数据类型数组。这意味着,C中任何C字符串中的最后一个字符将用于存储标记字符串结尾的空字符('\ 0')。
Header文件具有预定义的函数,可用于操作C-String(以空数终止的char数据类型数组)。你可以在这里阅读更多相关信息。
所以,你的程序应该是这样的:
#define MAX_CSTR_LEN 100
int main()
{
char capitalCity[MAX_CSTR_LEN + 1]; ///An extra position to store Null Character if 100 characters are to be stored in it.
scanf("%s", capitalCity);
// Use strcmp to compare values of two strings.
// If strcmp returns zero, the strings are identical
if (strcmp(capitalCity, "London") == 0) {
printf("Is the capital city of UK.");
}
else {
printf("Try again.");
}
return 0;
}
此外,您必须在C中使用单引号作为字符文字和双引号。
答案 1 :(得分:-1)
首先,您需要学习很多东西。我正在尽力向你解释。
如果输入字符串,则无法使用==
运算符进行比较。你需要使用在strcmp()
头文件中声明的<string.h>
函数,它逐字符地比较并返回0
如果两个字符串相等,则返回非零值。
#include <stdio.h>
#include <string.h> //for strcmp function
#define SIZE 30 //max size buffer for input
int main(){
char capitalCity[SIZE];
scanf("%s", capitalCity);
if(strcmp(capitalCity, "London") == 0){ //if(capitalCity == 'London') won't work in case of string comparison
printf("Is the capital city of UK.");
} else{
printf("Try again.");
}
return 0;
}