在将数字从文件复制到数组时使用printf的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在将数字从文件复制到数组时使用printf的问题相关的知识,希望对你有一定的参考价值。

我的代码有这个问题。我正在使用for循环从我打开的文件中复制一些数字。同时,我在fscanf语句后面放了一个printf语句,看看我想要的值是否真的进入了arr。这样可以正常工作,除了它在数组结束时添加一个额外的数字。我不明白为什么会这样。起初,我以为我使用的是文件中元素数量的错误计数,或者我在使用malloc时搞砸了,但这些都完全没问题。任何人都可以告诉我什么是错的。我不能分享代码,直到特定日期因为我是学生,它将被视为作弊。

编辑:下面是代码中发生的一段代码的链接。语言是C.代码是从一个文件中读取数字1 7 5 6 8 3 9 4 2 10但是它总是读取1 7 5 6 8 3 9 4 2 10 1

编辑:在函数声明中我的意思是char * file_name而不是int char * filename。

the image but i cant embed yet so a link

答案

您的代码中存在多个问题:

  • 函数原型中存在语法错误:int char* filename应该只是const char *filename
  • 你不测试fopen()的返回值。如果程序无法打开文件,您将有未定义的行为。
  • 你不测试fscanf()是否成功将文件内容转换为整数。你应该验证它返回1并处理错误,如果没有。

传递给函数的值很可能超过文件中实际存在的值的数量。在这种情况下,目标数组的内容不会更改超出读取的最后一个值,并且printf会输出那里发生的任何内容。

您应该将整个程序作为文本发布在您的问题中,以便进行更完整的分析和可能的更正。

以上是关于在将数字从文件复制到数组时使用printf的问题的主要内容,如果未能解决你的问题,请参考以下文章