C程序从用户处获取文件名和数字范围,从指定范围生成数字并打印到文件



我正在编写一个程序,从用户那里获得一些东西,然后将结果写入文件。程序将获取文件名、要生成的数字数、要生成的最低和最高数字,然后将其全部写入由用户命名的文件中。

程序正在做两件不正确的事情:

  1. 正在生成超出用户指定范围的数字

  2. 它正在添加一个?到文件名的末尾,我尝试使用strlen来删除字符串的最后一个字符,但我得到和错误:内置函数'strlen'的不兼容隐式声明。

#include <stdio.h>
#include <stdlib.h>
int main()
{
 char s[100];
 FILE *fout;
 int i, x, len;
 int h, l, q, a;
 printf("Please enter the file name: ");
 fgets(s, sizeof(s), stdin);
 printf("How many numbers should we generate: ");
 scanf("%d", &q);
 printf("lowest number to generate: ");
 scanf("%d", &l);
 printf("Highest number to generate: ");
 scanf("%d", &h);
 fout = fopen(s, "wb");
 a = h - l;
 if ( fout == NULL)
 {
  printf("That file is not availablen");
  exit(1);
 }
 fprintf(fout, "%dn", q);
 for (i=0; i < q; ++i) 
 {
  x = (rand() % l) + a;
  fprintf(fout, "%d ", x);
 }
fclose(fout);
return 0;
}
  • 关于文件名:删除fgets()s末尾的换行字符'n'(或'x0a'):

    if( s[strlen(s)-1] == 'n' )
         s[strlen(s)-1] = '';
    

    为完整起见:在windows上,您必须删除回车+换行'r' + 'n'(或'x0d' + 'x0a')

  • 关于错误的数字:它应该是x = (rand() % a) + l;(模数范围+最低,而不是相反)

相关内容

  • 没有找到相关文章

最新更新