怎样根据不同的输入生成不同的文件

VR_Lab 2009-04-18 08:34:34
我想根据一个输入m,来生成m个不同的文件,然后给这个文件写入数据,怎样实现打开不同的文件呢,最好是这些文件按编号生成
菜鸟请教哈
...全文
81 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
breezes2008 2009-04-18
  • 打赏
  • 举报
回复
来晚了
gtl022 2009-04-18
  • 打赏
  • 举报
回复

//main.cpp
#include <stdio.h>
#include <stdlib.h>

#define FILENAME_LEN 64

int main()
{
int i, m;
char **filename;
FILE **fp;

printf("Enter m: ");
scanf("%d", &m);

/*malloc mem for filename*/
filename = (char **)malloc(m*sizeof(char *));
if(filename == NULL)
{
printf("malloc error!\n");
return 0;
}
for(i=0; i<m; i++)
{
filename[i] = (char *)malloc(FILENAME_LEN * sizeof(char));
if(filename[i] == NULL)
{
printf("malloc error!\n");
break;
}
sprintf(filename[i], "file%d.txt", i);
}

/*malloc mem for fp*/
fp = (FILE **)malloc(m*sizeof(FILE *));
if(fp == NULL)
{
printf("malloc error!\n");
return 0;
}
for(i=0; i<m; i++)
{
fp[i] = fopen(filename[i], "w");
}

/*do something in file0, begin*/
if(fp[0])
fprintf(fp[0], "This is file0!\n");
/*do something in file0, end*/

/*release mem for filename*/
for(i=0; i<m; i++)
{
if(filename[i])
{
free(filename[i]);
filename[i] = NULL;
}
}
free(filename);

/*close file and release mem for fp*/
for(i=0; i<m; i++)
{
fclose(fp[i]);
fp[i] = NULL;
}
free(fp);

return 1;
}
gtl022 2009-04-18
  • 打赏
  • 举报
回复

//main.cpp
#include <stdio.h>
#include <stdlib.h>

#define FILENAME_LEN 64

int main()
{
int i, m;
char **filename;
FILE **fp;

printf("Enter m: ");
scanf("%d", &m);

/*malloc mem for filename*/
filename = (char **)malloc(m*sizeof(char *));
if(filename == NULL)
{
printf("malloc error!\n");
return 0;
}
for(i=0; i<m; i++)
{
filename[i] = (char *)malloc(FILENAME_LEN * sizeof(char));
if(filename[i] == NULL)
{
printf("malloc error!\n");
break;
}
sprintf(filename[i], "file%d.txt", i);
}

/*malloc mem for fp*/
fp = (FILE **)malloc(m*sizeof(FILE *));
if(fp == NULL)
{
printf("malloc error!\n");
return 0;
}
for(i=0; i<m; i++)
{
fp[i] = fopen(filename[i], "w");
}

/*do something in file0, begin*/
if(fp[0])
fprintf(fp[0], "This is file0!\n");
/*do something in file0, end*/

/*release mem for filename*/
for(i=0; i<m; i++)
{
if(filename[i])
{
free(filename[i]);
filename[i] = NULL;
}
}
free(filename);

/*close file and release mem for fp*/
for(i=0; i<m; i++)
{
fclose(fp[i]);
fp[i] = NULL;
}
free(fp);

return 1;
}
liliangbao 2009-04-18
  • 打赏
  • 举报
回复
参考:
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>

using namespace std;

int main(int argc, char *argv[])
{
FILE *fp = NULL;
char szFileName[20] = {0};
char szFileDir[30] = {0};
int iNum = 0; //保存生成的文件数
cin>>iNum;

for(int i = 1;i <= iNum;i++)
{
sprintf(szFileName, "%s%d%s", "D:\\file", i, ".txt");
strcpy(szFileDir, "D:\\");
strcat(szFileDir, szFileName);
fp = fopen(szFileName, "wt");
if(NULL == fp)
{
cout<<"生成第"<<i<<"文件失败!"<<endl;
break;
}
fprintf(fp,"%d\n",i);
fclose(fp);
}

system("PAUSE");
return 0;
}
ouyh12345 2009-04-18
  • 打赏
  • 举报
回复
sprintf(str, "%s%d%s", "file", m, ".txt");
sherrik 2009-04-18
  • 打赏
  • 举报
回复
没弄明白啥意思
辛鹤 2009-04-18
  • 打赏
  • 举报
回复
用gtl022 DE

69,372

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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