我正在将数据收集到一个 char[][] 数组中,然后让用户选择将这些字符串中的哪一个写入文件。所以我正在做例如
char arr[3][3]; // assume there are three different two-char long strings in there
FILE* f = fopen("file", "w");
fputs(arr[1], f);
fclose(f);
现在的问题是,我在fputs()
通话中遇到了段错误,我不知道为什么。
有任何想法吗?
我正在将数据收集到一个 char[][] 数组中,然后让用户选择将这些字符串中的哪一个写入文件。所以我正在做例如
char arr[3][3]; // assume there are three different two-char long strings in there
FILE* f = fopen("file", "w");
fputs(arr[1], f);
fclose(f);
现在的问题是,我在fputs()
通话中遇到了段错误,我不知道为什么。
有任何想法吗?
确保返回的文件指针fopen
不为 NULL;假设arr
包含有效的以 0 结尾的字符串,这是我能想到的唯一会导致fputs
呕吐的事情。
fputs
期望\0
- 终止的字符串。确保0
在您提供的字符串的末尾添加。或者使用fwrite
.
检查f != NULL
之后fopen
arr 指向什么?我猜这个问题是由于 arr 没有被初始化。
指向的 char 数组arr[1]
可能不是以空值结尾的。您应该声明arr
为并用(空)字符char arr[3][4];
填充最后一列。'\0'
可能您应该检查文件指针返回的值!