gpt4 book ai didi

c - 字符串比较函数

转载 作者:行者123 更新时间:2023-11-30 15:24:08 24 4
gpt4 key购买 nike

我是 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”,然后按 Enter 键。然后就崩溃了=\

请记住我是 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 是一个 char 数组,sizeof 运算符将给出它的大小(以字节为单位),并且由于 1 char == 1 byte 那么它有效。

对于 Display() 函数,情况有所不同,因为 sizeof 运算符将给出 ch 类型的大小code>,并且由于您真正需要的是 ch 指向的字符数,因此您必须使用 strlen() 或自己计算长度。

关于c - 字符串比较函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28550844/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com