gpt4 book ai didi

c - 从文本文件加载到 C 中的数组

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

我在从格式如下的行分隔文本文件加载一些代码时遇到了一些问题:

aa
bb
dd
ccasdf
dfdsafefasd
vdasfeadsaf
cvdasegfdjasflfe
swedtd

对于一个数组,我只想得到一个包含文本文件中所有内容的数组...这是我的代码:

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


int main()
{
int size = 0;
char peeps[10000][50];
FILE *people = fopen("test.txt","r");
while(fscanf(people,"%s",peeps[size]) != EOF)
{
size++;
}
fclose(people);
return 0;
}

当我运行它时出现段错误,我查看了 gdb 吐出的内容,但我不知道如何修复它...这是 gdp 打印出来的内容:

Program received signal SIGSEGV, Segmentation fault.
_IO_vfscanf_internal (s=s@entry=0x804a008, format=format@entry=0x804865f "%s", argptr=argptr@entry=0xbff85298 "4X\305I",
errp=errp@entry=0x0) at vfscanf.c:1073
1073 *str++ = c;
(gdb) bt
#0 _IO_vfscanf_internal (s=s@entry=0x804a008, format=format@entry=0x804865f "%s",
argptr=argptr@entry=0xbff85298 "4X\305I", errp=errp@entry=0x0) at vfscanf.c:1073
#1 0xb7e5564d in __isoc99_fscanf (stream=0x804a008, format=0x804865f "%s") at isoc99_fscanf.c:35
#2 0x08048581 in main () at fdsa.c:10

有人知道出了什么问题吗???

最佳答案

Anyone know what is going wrong???

我。三个连续的问号。

二。 scanf(people,"%s",peeps[size]) != EOF) - 如果您只想将文件读入内存,那么永远,永远 为此使用 scanf()

三。不要使用 int 作为大小。使用 size_t,它在标准库中是有充分理由的。

FILE *f = fopen("foo.txt", "r");
size_t total_size = 0;
size_t num_bytes = 0;

char buf[0x1000];
char *result = NULL;

while ((num_bytes = fread(buf, 1, sizeof(buf), f)) > 0) {
char *p = realloc(result, total_size + num_bytes);
if (p == NULL) {
fclose(f);
free(result);
abort(); // whatever, out of memory
}

result = p;
memcpy(result + total_size, buf, num_bytes);
total_size += num_bytes;
}

fclose(f);

如果您想提高一点效率,请实现动态缓冲区的对数扩展。

关于c - 从文本文件加载到 C 中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15984459/

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