gpt4 book ai didi

c - 更好地理解 C 中的 strstr

转载 作者:太空宇宙 更新时间:2023-11-04 02:51:05 25 4
gpt4 key购买 nike

我之前已经问过关于字符串函数 strstr 的问题,结果证明我犯了一个愚蠢的错误。现在我又得到了意想不到的结果,不明白为什么会这样。我写的代码只是一个简单的测试代码,以便我能更好地理解它,它需要一个包含 11 个单词列表的文本文件,我试图找到第一个单词在其余单词中的位置.我所做的只是将文本文档单词移动到一个二维字符串数组中,然后挑选出一些我知道应该返回正确值但返回 NULL 的字符串。第一次使用 strstr 返回正确的值,但最后 3 个,我知道其中包含单词 chant,返回 NULL。如果这又只是我犯的一个愚蠢的错误,我深表歉意,但是这里对理解这个字符串函数的任何帮助都会很棒。

文本文件的格式如下:

chant  
enchant
enchanted
hello
enchanter
enchanting
house
enchantment
enchantress
truck
enchants

我写的代码是:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[]) {

FILE* file1;
char **array;
int i;
char string[12];
char *ptr;

array=(char **)malloc(11*sizeof(char*));

for (i=0;i<11;i++) {
array[i]=(char *)malloc(12*sizeof(char));
}

file1=fopen(argv[1],"r");

for (i=0;i<11;i++) {
fgets(string,12,file1);
strcpy(array[i],string);
}

ptr=strstr(array[1],array[0]);
printf("\nThe two strings chant and %s yield %s",array[1],ptr);
ptr=strstr(array[2],array[0]);
printf("\nThe two strings chant and %s yield %s",array[2],ptr);
ptr=strstr(array[4],array[0]);
printf("\nThe two strings chant and %s yield %s",array[4],ptr);
ptr=strstr(array[5],array[0]);
printf("\nThe two strings chant and %s yields %s",array[5],ptr);


return 0;
}

最佳答案

去掉 fgets() 之后的尾随 \n

for (i=0;i<11;i++) {
fgets(string, sizeof string, file1);
size_t len = strlen(string);
if (len > 0 && string[len-1] == '\n') string[--len] = '\0';
strcpy(array[i], string);
}

关于c - 更好地理解 C 中的 strstr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22160723/

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