c - C/ 从文件到数组的字符串数据。分段故障
问题描述
我正在编写一个程序,它从文本文件中流式传输单词并将它们放入数组中。我还添加了数组数据的显示以查看是否一切正常,但编译后出现分段错误。
我是系统编程的新手,所以我知道我可能犯了一些基本错误。请找到下面的代码并告诉我哪里出错了。
#include <stdio.h>
#define BUFFER 100
int main() {
char tab[BUFFER];
FILE *wp;
wp = fopen("tab_file_b_words.txt", "r");
if(wp == NULL)
{
printf("error/n");
return -1;
}
int i;
for(i=0; i<sizeof(wp); i++) {
if(wp != NULL)
fscanf(wp, "%s", &tab[i]);
else
break;
}
printf("Content: \n");
for(i = 0; i < BUFFER; i++) {
if(tab[i] != NULL)
printf("%s\n", tab[i]);
else
break;
}
fclose(wp);
return 0;
}
解决方案
截至目前,你有数组
char
你需要的是
char tab[BUFFER]; --> char tab[BUFFER][SOME_LENGTH];
和
fscanf(wp, "%s", &tab[i]); --> fscanf(wp, "%s", tab[i]);
%s
期望null
终止char *
,但您正在通过char
.printf("%s\n", tab[i]);
sizeof(wp)
是指针的大小。for(i=0; i<sizeof(wp); i++)
你需要的是
while (1 == fscanf(wp, "%s", tab[i])) { ... }
推荐阅读
- html - 表情符号在我的辅助页面上不起作用,但在我的主页上却可以
- python - 如何从熊猫数据框中返回单个组
- laravel - jordanmiguel/laravel-popular 无法安装
- javascript - 将网站更新为 Progressive Web App
- javascript - 如何与使用打字稿不匹配的给定值进行比较?
- javascript - 在第二个 axios api 调用上获取错误 400 错误请求
- r - 使用 apache 箭头在一个 R 数据帧中读取分区 parquet 目录(所有文件)
- javascript - ASP.Net Core 3 和简单的 POST 控制器
- javascript - 如何测试 google.maps.Geocoder?
- kubernetes - 是否可以/建议关闭 EKS 上的 NodeRestriction 插件?