我正在尝试在文本文件中写入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);
}
答案 0 :(得分:11)
不,如果没有至少一些严肃的警告,就没有办法编译。
您正在使用fputs()
,就好像它是fprintf()
一样,传递一个整数而不是一个FILE
指针(编译器不应该允许)和一个额外的参数(编译器不应该允许的。)
你的for
循环也被破坏了。中间部分是一个表达式,只要循环应该,应该为真,而不是相反。
你的意思是:
for(i = 0; i < 400; ++i)
{
fprintf(filePointer, "%d, ", i);
}
此外,您应该在假设文件确实打开之前检查该文件是否确实打开了。 I / O可能会失败。
答案 1 :(得分:4)
除了使用fputs()之外,问题是:
for(i=0; i > 400; i++)
如果将变量初始化为零并执行循环,只要它大于400,那就不会持续太久。
答案 2 :(得分:-1)
fputs
语法似乎错了。我认为是:
int fputs(const char *str, FILE *stream)
选择 @ unwind&#39> 方法(如上所述),但如果您仍想使用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
这应该有效。 #happycoding:)
PS :您似乎在声明变量 where 时遵循了一点C ++标准。 不 纯 C. #justsaying