字符串比较函数
String comparison function
我是 C 语言的新手,正在尝试找出并了解我的代码无法正常工作的原因。我知道在 C 中,字符串基本上是每个字符的数组。所以我一直在尝试搜索数组以找到字母 a,如果找到则打印一些内容。但是每次我尝试 运行 我的程序总是崩溃。
这是我的代码:
#include <stdio.h>
void Display(char ch[]);
int main() {
char c[50];
printf("Enter String: ");
gets(c);
Display(c);
return 0;
}
void Display(char ch[]) {
int i;
for (i = 0; i < (sizeof(ch)); i++) {
if (strcmp(ch[i],"a") == 0) {
printf( "Yes");
}
}
}
当我 运行 我的程序时,我输入一个随机字符串,例如 "fdas" 并按回车键。然后它崩溃了=\
请记住我是 C 的新手。我是 Java 程序员,如果这有助于任何解释。
这是错误的
if(strcmp(ch[i],"a") == 0)
应该是
if (ch[i] == 'a')
而且,sizeof(ch)
没有给你字符串的长度,因为你需要 strlen()
,你的 Display()
函数应该像这样工作
void Display(char *ch) {
size_t i;
size_t length;
if (ch == NULL)
return;
length = strlen(ch);
for (i = 0 ; i < length ; i++) {
if (ch[i] == 'a') {
printf( "Yes");
}
}
}
此外,使用 gets()
是不安全的,已弃用,请使用 fgets()
fgets(c, sizeof(c), stdin);
优于 gets(c)
因为它会防止缓冲区溢出,请注意我在这种情况下使用了 sizeof
运算符,因为 c
是 [=22 的数组=] 和 sizeof
运算符将以字节为单位给出它的大小,并且由于 1 char == 1 byte
然后它可以工作。
在 Display()
函数的情况下,它是不一样的,因为 sizeof
运算符将给出 ch
类型的大小,因为你真正需要的是是 ch
指向的字符数,所以你必须使用 strlen()
或自己计算长度。
我是 C 语言的新手,正在尝试找出并了解我的代码无法正常工作的原因。我知道在 C 中,字符串基本上是每个字符的数组。所以我一直在尝试搜索数组以找到字母 a,如果找到则打印一些内容。但是每次我尝试 运行 我的程序总是崩溃。
这是我的代码:
#include <stdio.h>
void Display(char ch[]);
int main() {
char c[50];
printf("Enter String: ");
gets(c);
Display(c);
return 0;
}
void Display(char ch[]) {
int i;
for (i = 0; i < (sizeof(ch)); i++) {
if (strcmp(ch[i],"a") == 0) {
printf( "Yes");
}
}
}
当我 运行 我的程序时,我输入一个随机字符串,例如 "fdas" 并按回车键。然后它崩溃了=\
请记住我是 C 的新手。我是 Java 程序员,如果这有助于任何解释。
这是错误的
if(strcmp(ch[i],"a") == 0)
应该是
if (ch[i] == 'a')
而且,sizeof(ch)
没有给你字符串的长度,因为你需要 strlen()
,你的 Display()
函数应该像这样工作
void Display(char *ch) {
size_t i;
size_t length;
if (ch == NULL)
return;
length = strlen(ch);
for (i = 0 ; i < length ; i++) {
if (ch[i] == 'a') {
printf( "Yes");
}
}
}
此外,使用 gets()
是不安全的,已弃用,请使用 fgets()
fgets(c, sizeof(c), stdin);
优于 gets(c)
因为它会防止缓冲区溢出,请注意我在这种情况下使用了 sizeof
运算符,因为 c
是 [=22 的数组=] 和 sizeof
运算符将以字节为单位给出它的大小,并且由于 1 char == 1 byte
然后它可以工作。
在 Display()
函数的情况下,它是不一样的,因为 sizeof
运算符将给出 ch
类型的大小,因为你真正需要的是是 ch
指向的字符数,所以你必须使用 strlen()
或自己计算长度。