如何使用以C语言的文件操作函数?

hcwsdiy 2009-02-22 10:00:54
我的问题是,使用C语言输入一组数据到一个文件中,
1首先输入文件名:
2然后共输入有多少组数据要输入:
3依次输入数据:
4最终,将数组的总个数赋给一个变量和将每组数据的第二个数(下面举例中的2,4,6,-9,0)赋给一个数组,输出数组里的值!
如:
input.txt
5
1 2
3 4
2 6
3 -9
5 0


以下这个程序,我已经完成了1,2,3步,请各位帮我实现第4步,谢谢!!!!
#include "stdio.h"
#include "stdlib.h"
void main()
{
FILE *fp;
char filename[10];
int n,i,x,y;
printf("input the file name:");
scanf("%s",filename);
if((fp=fopen(filename,"w"))==NULL)
{
printf("cannot open the file!\n");
exit(0);
}

scanf("%d",&n);
fprintf(fp,"%d\n",n);
for(i=0;i<n;i++)
{scanf("%d %d",&x,&y);
fprintf(fp,"%d %d\n",x,y);
}
}
...全文
147 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hcwsdiy 2009-02-24
  • 打赏
  • 举报
回复
你的程序有一点错误,经x的值被覆盖了,i<n应改为i<=n,谢谢你的帮助!!!
for (i = 0; i < n; i++)
{
if (i == 0)
fscanf(fp, "%d", &x);
else
{
fscanf(fp, "%d %d", &x, &a[i-1]);
printf("%d ",a[i-1]);
}
}
fclose(fp);
system("PAUSE");
return 0;
}
hcwsdiy 2009-02-24
  • 打赏
  • 举报
回复
你的程序有一点错误,经x的值被覆盖了,i<n应改为i<=n,谢谢你的帮助!!!
for (i = 0; i < n; i++)
{
if (i == 0)
fscanf(fp, "%d", &x);
else
{
fscanf(fp, "%d %d", &x, &a[i-1]);
printf("%d ",a[i-1]);
}
}
fclose(fp);
system("PAUSE");
return 0;
}
  • 打赏
  • 举报
回复
接分帮顶.
thinkboy234 2009-02-23
  • 打赏
  • 举报
回复
while(i<n)
{
fscanf(fp, "%d %d", &x, &num[i-1]);
printf("%d ",num[i-1]);
i++; //改一下这
}

可能还有差的地方。
thinkboy234 2009-02-23
  • 打赏
  • 举报
回复
仅供参考:
#include "stdio.h" 
#include "stdlib.h"
void main()
{
FILE *fp;
char filename[10];
int n,i,x,y;
printf("input the file name:");
scanf("%s",filename);
if((fp=fopen(filename,"w"))==NULL)
{
printf("cannot open the file!\n");
exit(0);
}

scanf("%d",&n);
fprintf(fp,"%d\n",n);
for(i=0;i <n;i++)
{
scanf("%d %d",&x,&y);
fprintf(fp,"%d %d\n",x,y);
}
fclose(fp);

fp=fopen(filename,"r");
fscanf(fp, "%d", &x);
i=0;
i++;
while(i<n)
{
fscanf(fp, "%d %d", &x, &num[i-1]);
printf("%d ",num[i-1]);
}
fclose(fp);
}
thesecretblue 2009-02-23
  • 打赏
  • 举报
回复
同上!!!!
dongpy 2009-02-23
  • 打赏
  • 举报
回复
#include "stdio.h"
#include "stdlib.h"
void main()
{
FILE *fp;
char filename[10];
int data[32];
int n,i,x,y;
printf("input the file name:");
scanf("%s",filename);
if((fp=fopen(filename,"w"))==NULL)
{
printf("cannot open the file!\n");
exit(0);
}

scanf("%d",&n);
fprintf(fp,"%d\n",n);
for(i=0;i <n;i++)
{scanf("%d %d",&x,&y);
fprintf(fp,"%d %d\n",x,y);
data[i] = y;
}

for(i=0;i <n;i++)
{
printf( "%d ", data[i] );
}
}
riceli 2009-02-22
  • 打赏
  • 举报
回复

#include <stdlib.h>
#include <stdio.h>
#define ERR_NO_FILED 0
#define ERR_OVER_MAX 1
#define ERR_NO_FILE 2
char* g_szError[] =
{
"未进行赋值!", /*0*/
"超过最大允许的行数!", /*1*/
"不能打开文件!"
};
void OutError(int num)
{
printf("%s\n", g_szError[num]);
}
#define MAX_LINE_NUM 20 /*最大20行*/
int Example()
{
int nLine = 0; /*实际输入多少行*/
int* parLine = NULL; /*指向输入字符数组的指针*/
int i = 0;
FILE* fp;
char szFileName[256];
int* pNum = NULL;

printf("请输入文件名:\n");
scanf("%s", szFileName);
printf("文件名:%s\n", szFileName);
printf("请输入总行数:\n");
while(1)
{
scanf("%d", &nLine);
if (nLine <= MAX_LINE_NUM)
{
break;
}
OutError(ERR_OVER_MAX);
}

parLine = (int*)malloc(nLine * sizeof(int) * 2); /*申请空间*/

for (i = 0; i < nLine; i++)
{
scanf("%d %d", parLine + 2 * i, parLine + 2 * i + 1);
}

fp = fopen(szFileName, "w");
if (NULL == fp)
{
OutError(ERR_NO_FILE);
goto PROG_END;
}
fprintf(fp, "%d\n", nLine);
for (i = 0; i < nLine; i++)
{
fprintf(fp, "%d %d\n", *(parLine + 2 * i), *(parLine + 2 * i + 1));
}

fclose(fp);
fp = NULL;
printf("读入完毕!");


PROG_END:
free(parLine);
parLine = NULL;
system("PAUSE");
return 1;
}
waizqfor 2009-02-22
  • 打赏
  • 举报
回复
改了一下 LZ看看

#include "stdio.h"
#include "stdlib.h"
void main()
{
FILE *fp;
char num[20];
char filename[10];
int n,i,x,y;
printf("input the file name:");
scanf("%s",filename);
if((fp=fopen(filename,"w"))==NULL)
{
printf("cannot open the file!\n");
exit(0);
}

scanf("%d",&n);
fprintf(fp,"%d\n",n);
for(i=0;i <n;i++)
{scanf("%d %d",&x,&y);
fprintf(fp,"%d %d\n",x,y);
}
fclose(fp);
fp = fopen(filename,"r");
for (i=0;i<n;i++)
{
if (i==0)
fscanf(fp, "%d", &x);
else
{
fscanf(fp, "%d %d", &x, &num[i-1]);
printf("%d ",num[i-1]);
}
}
fclose(fp);
}
wudeshou82666 2009-02-22
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>
#include "stdafx.h"
int main()
{
FILE *fp;
char filename[10];
int n,i,x,y;
int a[][2];
printf("input the file name:");
scanf("%s",filename);
if((fp=fopen(filename,"w"))==NULL)
{
printf("cannot open the file!\n");
exit(0);
}

scanf("%d",&n);
fprintf(fp,"%d\n",n);
for(i=0;i <n;i++)
{scanf("%d %d",&x,&y);
fprintf(fp,"%d %d\n",x,y);
a[i][0]=x;a[i][1]=y;
}
for(int j=0;j<i;j++)
{
printf("%d\n",a[j][1]);
}
fclose(fp);
fp=NULL;
}
不一定对.大体上可以这样写吧
冰矿 2009-02-22
  • 打赏
  • 举报
回复
如果按你所说的话,没组两个数字,那很容易
#include <stdio.h>
int main()
{
FILE *fp;
char filename[10];
char a[20];
int n,i,x,y;
printf("input the file name:");
scanf("%s",filename);
if ((fp=fopen(filename,"w"))==NULL)
{
printf("cannot open the file!\n");
exit(0);
}
scanf("%d",&n);
fprintf(fp,"%d\n", n);
for (i = 0; i < n; i++)
{
scanf("%d %d",&x,&y);
fprintf(fp,"%d %d\n",x,y);
}
fclose(fp);

fp = fopen(filename,"r");
for (i = 0; i < n; i++)
{
if (i == 0)
fscanf(fp, "%d", &x);
else
{
fscanf(fp, "%d %d", &x, &a[i-1]);
printf("%d ",a[i-1]);
}
}
fclose(fp);
system("PAUSE");
return 0;
}

69,381

社区成员

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

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