gpt4 book ai didi

c - 如何从文本文件中读取字符串并将其存储在数组中

转载 作者:行者123 更新时间:2023-12-02 00:15:43 26 4
gpt4 key购买 nike

我正在做一个类项目,我真的需要帮助。我需要实现的是从一个文本文件或两个单独的文件中读取两个字符串,并将它们分别存储在两个数组中。字符串可以是任意长度,但不必很长。每个数组的大小可以根据对应字符串的长度自动调整。

我在 Stack Overflow 上搜索并获得了一些代码,我正在尝试使用 malloc() 的代码。但是我在尝试获取数组大小时遇到​​了麻烦。

int main(){
int i = 0;

int BUFSIZE = 1000;
char* string[20];
FILE *fp = fopen("input.txt", "r");
if (fp == 0){
fprintf(stderr, "Error while opening");
return 0;
}

string[i] = (char *)malloc(BUFSIZE);
while (fgets(string[i], BUFSIZE, fp)) {
i++;
string[i] = (char *)malloc(BUFSIZE);
}

float len=sizeof(string);
printf("%f", len);

int x;
for(x = 0; x<i; x++)
free(string[x]);
scanf("%d", x);
fclose(fp);
return 0;
}

我试图输出 len,但无论字符串有多长,我得到的是一个常量值 80。此外,我不知道如何读取两个字符串,并将它们存储在两个单独的数组中。尝试将另一个字符串添加到代码中时出现错误。

最佳答案

这个:

float len=sizeof(string);

只是给你 static 数组 string 的大小,它是一个包含 20 个指针的数组,每个指针是 4 个字节,20 * 4 字节 = 80 这就是为什么总是 80。你已经有了数组的大小,因为你为每个字符串递增 i,这就是数组的大小,只需按大小打印 i 我的意思是字符串的数量你在数组中分配的,或者文件中的行数。

编辑:如果您想获取数组中字符串的长度,请使用 strlen

while (fgets(string[i], BUFSIZE, fp)) {
i++;
len+=strlen(string[i]);
string[i] = (char *)malloc(BUFSIZE);
}

注意:它应该是 int 而不是 float 但这不是重点。

关于c - 如何从文本文件中读取字符串并将其存储在数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13314590/

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