对于我的类,我们使用char数组作为字符串。如果我要使用if else
语句,如果我对其进行了修改,那么这样的工作是否会起作用?
我知道像这样的数组会将每个字符分解成简单的字母。要使用if else
语句,我必须使用数组[1] =='H'等等。
如果我输入“Alas”,有没有办法修改下面的代码以吐出我想要的信息。现在,它只进入else
部分。
int main()
{
char s[10];
printf("Yo, this is a string: ");
gets_s(s);
if (s == "Alas")
{
printf("B ");
}
else
{
printf("A");
}
system("pause");
}
答案 0 :(得分:7)
使用strncmp
标准库函数比较两个字符串。包括<string.h>
标题。
strncmp(const char *s1, const char *s2, size_t n)
成功完成后,
strncmp()
将返回大于,等于或小于0的整数,如果s1
指向的可能以null结尾的数组大于,等于或者小于s2
分别指向的可能以null结尾的数组。
答案 1 :(得分:1)
现在在你的代码中s是指针,“Alas”被视为指针。指向另一个内存区域的指针。这就是他们总是不同的原因。使用
if (!strcmp(s, "Alas"))
答案 2 :(得分:0)
类似的东西:
int main()
{
char s[10];
printf("Yo, this is a string: ");
gets_s(s);
if (strcmp(s, "Alas") == 0)
{
printf("B ");
}
else
{
printf("A");
}
system("pause");
}
答案 3 :(得分:0)
如果您唯一想知道的是两个字符串是否相同,您可以自己定义一个函数来检查两个字符串的每个字符,一旦遇到差异就返回0
,返回a 1
只有在同时遇到终止零时才会出现:
SameStrings( char * s1, char * s2 ) {
for ( int i = 0; s1[i] && s2[i]; i++ )
if ( s1[i] != s2[i] )
return 0;
// if the programme advanced this far
// either one of both should be 0
return s1[i] == s2[i];
// if they are equal, then both must be 0, in which case it will return 1
// else it will return a 0
}
您可以为该函数添加一个参数,这个整数将限制要检查的最大字符数,例如,您希望SameStrings( "lalaqwe", "lalaasd", 4 )
返回true。
如果你不想为一个比你需要的功能更多的函数包含一个库,这是很好的...