菜鸟c语言问题,如何根据用户输入的数值决定输出的文件名,求大神解答

u012418561 2014-02-19 06:06:35
需求:输出一个N * N 乘法表到一个文件中,N由用户决定,文件名为"N * N chengfb.txt",例如:用户输入13,则在文件名为"13 X 13 chengfb.txt"的文件中输入一个13*13的乘法表。
我的思路是这样子:用一个字符串数组存放文件名,但是有一个问题就是怎么把一个int型数据转化为char。下面是我的代码:

#include<stdio.h>
#include<string.h>
int main()
{
int i=0,j=0,n=0;
char file_name[20],*pstr; //存放文件名
pstr=file_name;
FILE* fpin;
printf("输出几阶乘法表?");
while(n<1 || n>99) //输入数字限制在1~99之间
{
scanf("%d",&n);
if(n<1 || n>99)
{
printf("数字大于99或非法,请重新输入!\n");
}
}

//修改文件名为“n X n chengfb.txt”,存放在file_name中
//下面是出错的地方
//*pstr=((char)n);//刚开始这样写,但是存进去的是ASCII码,输出后不是数字,还出错
strcpy(pstr,(char)n);pstr++;
strcpy(pstr," X ");pstr+=3;
strcpy(pstr,(char)n);pstr++;
strcpy(pstr," chengfb.txt");


if((fpin = fopen(file_name,"w")) == NULL) //打开文件
{
printf("无法打开文件!\n");
system("pause");
exit(1);
}
for(i=1;i<=n;i++)
{
for(j=1;j<=i;j++)
{
fprintf(fpin,"%d X %d = %-3d ",i,j,j*i);
}
fputc('\n',fpin);

}
fclose(fpin);

printf("已输出到当前目录下,文件名为“%d X %d chengfb.txt”\n",n,n);

system("pause");


}



还有个问题是如果用宏的话,参数如果在字符串里有没有办法传递参数,这个能解决么


#define openfile(n) fopen("n X n chengfb.txt","w")


大神们还有什么办法能实现这个需求
谢谢大神们解答~
...全文
347 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
u012418561 2014-02-22
  • 打赏
  • 举报
回复
忘了还有sprintf,谢谢各位
derekrose 2014-02-21
  • 打赏
  • 举报
回复
引用 1 楼 u012418561 的回复:
我去,帖子写一半手残碰到回车,竟然发出去了,论坛能不能改改。
可以改 联系我
baichi4141 2014-02-21
  • 打赏
  • 举报
回复
既然会用printf,就花几分钟看一下sprintf吧
赵4老师 2014-02-21
  • 打赏
  • 举报
回复
作为一个C程序员,对 scanf,sscanf,fscanf printf,sprintf,fprintf 这类函数的用法,还是要做到“拳不离手,曲不离口”的。
重庆-老白 2014-02-21
  • 打赏
  • 举报
回复
下面好像有个管理编辑之类的
starytx 2014-02-20
  • 打赏
  • 举报
回复
char file_name[20] = {0}; sprintf(file_name ,"%d X %dchengfb.txt" ,n,n);
Falleyes 2014-02-20
  • 打赏
  • 举报
回复
http://blog.sina.com.cn/s/blog_4ba5b45e0102durh.html
u012418561 2014-02-19
  • 打赏
  • 举报
回复
我去,帖子写一半手残碰到回车,竟然发出去了,论坛能不能改改。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧