gpt4 book ai didi

在 C 中比较字符串时崩溃

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

好吧,我正在尝试编写一个函数来检查字符串数组中是否存在单词的字母(它对单词中的每个字母执行此操作)。经过一段时间的修改后,我发现它在尝试使用 strcmp() 时崩溃了。我不知道我做错了什么,因为我刚刚开始学习 C,所以任何帮助将不胜感激。这是函数:

char SingleChar(char *lex, int wordnum,char *word){
int i,j,k;
for(i=0;i<strlen(word);i++){
for(j=0;j<wordnum;j++){
for(k=0;k<strlen(lex[j]);k++){
if(strcmp(word[i],lex[k])){
return word[i];
}
}
}
}
return 0;
}

最佳答案

您对 char * 的含义有误解。它是一个指向字符的指针。在 C 语言中,字符串只是一个指向字符的指针,由其他字符和空终止符组成。在您的情况下,这意味着 lex 是单个字符串,而不是字符串列表。

char *a = "imastring"; 表示 a 是包含字符 [i][m][a][s][t][r 的连续内存块的地址][i][n][g][\0]。在 C 中,空终止符用于表示字符串的结尾。

这意味着当您调用 strlen(lex[j]) 时,您只是引用 lex 中的单个字符,然后读取到字符串的末尾,因此您的结果将是单调递减。

您可能想要做的是使用双指针。 char ** list 将指向一个地址,该地址指向引用连续字符 block 的地址。

char ** list = (char **)malloc(sizeof(char *) * 5); 将为您分配 5 个连续的内存地址,然后这些地址可以指向字符串本身。您可以按如下方式为它们分配值。

列表[0] = a

我希望这会有所帮助。

关于在 C 中比较字符串时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29571971/

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