所以我创建了一个项目,从文本文件中读取数字并绘制它的等轴投影,但现在我正在尝试创建一个程序,生成0-9的数字并将它们写入文档。这是我的代码看起来像,但文档仍然是空的。我假设错误是在我的rand()函数用法中,或者当我将整数转换为字符时。
提前感谢所有输入,如果只是操作员错误,我道歉。我对这些东西很新:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char str[10];
FILE *fptr;
int i;
int num;
char num2;
i = 0;
fptr = fopen("map.fdf", "w");
if (fptr == NULL)
{
printf("ERROR Creating File!");
exit(1);
}
while (str[i] != '\0')
{
num = rand() % 10;
num2 = num + '0';
str[i] = num2;
i += 1;
}
puts(str);
fprintf(fptr,"%s", str);
fclose(fptr);
return (0);
}
答案 0 :(得分:3)
我不理解你的while
循环,它似乎等待某些条件,它不包含要发生的代码。
无论如何,如何不重新发明如何将单位数整数转换为字符,而是使用更高级别的I / O函数来打印到文件?毕竟,这就是他们在那里的原因。 :)
for (int i = 0; i < 10; ++i)
{
fprintf(fptr, "%d", rand() % 10);
}
fprintf(fptr, "\n"); /* Probably nice to make it a line. */
如果你真的必须没有for
,你当然可以手动将其转换为while
循环:
int i = 0;
while(i++ < 10)
{
fprintf(fptr, "%d", rand() % 10);
}
答案 1 :(得分:2)
你的&#34; str&#34;是未初始化的,但显然有一个&#39; \ 0&#39;字符作为它的第一个元素,因此while循环不会执行。
答案 2 :(得分:0)
所以我今天在文件处理中得到了分配偶数、奇数和质数到不同文件的任务,我还决定用随机数创建输入文件。我也遇到了和你类似的问题。对不起,我迟到了 5 年。
FILE *fn;
int num,n,range;
printf("Enter number of positive integer:");
scanf("%d",&n);
printf("Enter max integer:");
scanf("%d",&range);
fn=fopen("number.txt","w");
for (int i=0;i<n;++i) {
num=(rand()%range)+1;
fprintf(fn,"%d\n",num);
}
fclose(fn);