0

我正在尝试在文本文件中写入从 1 到 400 的数字。我正在使用下面的代码,它运行时没有任何错误,但文件被留空。

任何帮助,将不胜感激。

#include <stdio.h>

int main(void)
{
    FILE *filePointer;
    filePointer = fopen("file.txt","w");
    int i; 
    for(i=0; i > 400; i++)
    {
        fputs("%d, ",i,filePointer);
    }
    fclose(filePointer);
    return(0);
}
4

3 回答 3

11

不,至少在没有一些听起来很严肃的警告的情况下编译是不可能的。

您就像使用fputs()它一样fprintf(),向它传递一个整数而不是一个FILE指针(编译器不应允许)和一个额外的参数(编译器不应允许)。

你的for循环也坏了。中间部分是一个表达式,只要循环应该运行就应该为真,而不是相反。

你的意思是:

for(i = 0; i < 400; ++i)
{
  fprintf(filePointer, "%d, ", i);
}

此外,您应该在假设文件确实打开之前检查文件是否确实打开。I/O 可能会失败。

于 2015-04-28T09:48:23.410 回答
4

除了 fputs() 用法,问题是:

for(i=0; i > 400; i++)

如果你用零初始化一个变量并执行一个循环,只要它大于 400,那将不会持续太久。

于 2015-04-28T09:50:23.287 回答
-1

fputs语法似乎错误。我认为是这样:

int fputs(const char *str, FILE *stream)

选择@unwind 的方法(如上所述),但如果您仍想使用,fputs那么您的 fputs 行应扩展为 3 行:

char temp[4];                // String to store 3-digit number + '\0'
sprintf(temp, "%d, ", i);    // Prepare a string for a given number
fputs(temp, filePointer);    // Write the string to the file

这应该有效。#快乐编码 :)

PS :在任何地方声明变量时,您似乎遵循了一点 C++ 标准。它不是 C。#justsaying

于 2015-04-28T10:18:10.913 回答