0

我正在将数据收集到一个 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()通话中遇到了段错误,我不知道为什么。

有任何想法吗?

4

5 回答 5

2

确保返回的文件指针fopen不为 NULL;假设arr包含有效的以 0 结尾的字符串,这是我能想到的唯一会导致fputs呕吐的事情。

于 2011-08-31T15:10:44.580 回答
1
  1. fputs期望\0- 终止的字符串。确保0在您提供的字符串的末尾添加。或者使用fwrite.

  2. 检查f != NULL之后fopen

于 2011-08-31T14:52:18.610 回答
0

arr 指向什么?我猜这个问题是由于 arr 没有被初始化。

于 2011-08-31T14:51:03.357 回答
0

指向的 char 数组arr[1]可能不是以空值结尾的。您应该声明arr为并用(空)字符char arr[3][4];填充最后一列。'\0'

于 2011-08-31T14:51:27.770 回答
0

可能您应该检查文件指针返回的值!

于 2011-08-31T15:19:54.327 回答