gpt4 book ai didi

c - fscanf 没有将字符串读入数组

转载 作者:太空宇宙 更新时间:2023-11-04 06:20:56 24 4
gpt4 key购买 nike

为什么这个 main 不打印任何东西?它应该打印文件中的第一个单词。

int main(int argc, char *argv[])
{
FILE *file = fopen(argv[1], "r");
int n = atoi(argv[2]);

char **words = new char*[n];
for(int i = 0; i < n; i++)
{
fscanf(file, "%s ", words[i]);
}
cout << words[0] << endl;
}

最佳答案

char **words = new char*[n];将分配一个缓冲区来保存 n 个指向 char 的指针,words 只是一个指向指针数组的指针。您需要为 words[i](指向 的指针)分配足够的内存来保存字符串:

for (i=0; i < n; ++i ) {
words[i] = new char[your_max_string_len];
}

您可以选择使用 getline extension of GNU (如果你使用 gcc)做你想做的事:

size_t len = 0;
ssize_t read;
read = getline(&words[i], &len, stdin);
...
free(words[i]);

实际上,这个函数并没有什么神奇之处,它只是在后台进行内存分配来保存你的内存,而释放它是你的责任。

关于c - fscanf 没有将字符串读入数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35167614/

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