gpt4 book ai didi

c - 将数据导入参差不齐的数组

转载 作者:太空宇宙 更新时间:2023-11-04 00:44:41 27 4
gpt4 key购买 nike

作为练习,我构建了一个简单的程序,给定一个包含 N 个小写单词和空格的文本文件,填充一个参差不齐的数组 char *en[N] .

它没有什么大问题,除了一个问题:它只用输入的最后一个单词填充参差不齐的数组。

#include<stdio.h>
#include<ctype.h>

int main(int argc, char *argv[]){
int i = 0, j = 0;
char *en[100];
char temp[20];

FILE *p = fopen(argv[1], "r");
char single;

while((single = fgetc(p)) != EOF){
if(!isspace(single)) /* Temporary store a single word */
temp[i++] = single;
else{
temp[i] = '\0';
en[j++] = temp; /* Save stored word in ragged array */
i = 0;
}
}

printf("%s\n", en[0]); /* Return the same than en[1] and en[99] */
printf("%s\n", en[1]);
printf("%s\n", en[99]);

return 0;
}

我不明白为什么它会一直到输入文件的末尾。我无法检测到可能暗示错误方法的主要问题。

编辑:

我的方法背后的原因是 *char 数组可以用这种形式初始化:

p[0] = "abc";

我错误地尝试在上面的错误中翻译的推理,@coderredoc 出色地捕捉到了。就单个单词和输入的维度而言,我承认我并没有对它们给予太多关注。该练习以不同的主题为中心。无论如何,非常感谢您的宝贵建议!

最佳答案

您的字符数组都指向同一个字符数组,然后数组的内容最后更改为最后一个单词。而您是最后一个词。

可能的解决方案

en[j++] = temp;

en[j++] = strdup(temp);

然后您将实现您希望程序具有的行为。

关于c - 将数据导入参差不齐的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47700257/

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