逐字阅读文件

时间:2018-05-03 20:53:39

标签: c file scanf

我不知道为什么但是我的代码打印了一个(null)(null)(null)的列表.... 我必须打印文件'words.txt'中的单词列表。 另一个问题是:fscanf忽略空格?

text-size

1 个答案:

答案 0 :(得分:1)

您永远不会将malloc()的返回值分配给quote[i],因此他们最终会留下NULL(如果您很幸运):

  char **quote = malloc(sizeof(char*) * (size_t)SIZE_QUOTE);
  long i;
  for(i = 0; i < SIZE_QUOTE; i++){
    if(!(malloc(sizeof(char) * WORD_LENGTH)))

应该是这样的:

  char **quote = malloc(sizeof(char*) * (size_t)SIZE_QUOTE);
  for(int i = 0; i < SIZE_QUOTE; i++){
    quote[i] = malloc(sizeof(char) * WORD_LENGTH);
    if(!quote[i])

如果所有大小都已知,你可以完全避免malloc()并静态初始化该数组:

char quote[SIZE_QUOTE][WORD_LENGTH] = {{'\0'}};

此外,您最后也应该free()个人quote[i]

for(int i = 0; i < SIZE_QUOTE; ++i) free(quote[i]);
free(quote);

已经通过评论指出了其他错误,所以我不会进一步详述。