c语言数组写入文件
A. c语言中如何将一维数组的内容写入文件
主要原因是 if((fp=fopen("成绩.txt","w+"))=NULL)这句
= 要改为==
=意味着 把 NULL赋值为fp因此 fp则永远为空了
改过的代码如下:(我添加的部分有注释)
#include<stdio.h>
#include<stdlib.h>
intmain()
{
FILE*fp;
intnum[100];
intscore[100];
inti=0;//i值不变
intj=0,k=0;//用来控制循环
inta=0,b=0,c=0,l=0;
intmax=0;//用来计算最大值
lap:printf("请输入学生数目: ");
scanf("%d",&i);
j=i;//用来保留i的值
for(k=0;k<j;k++)
{
printf("请输入第%d个学生的学号和分数,中间用空格隔开: ",l+k+1);
scanf("%d%d",&num[l+k],&score[l+k]);
}
l=l+i;//计数器
i=0;
printf("输入完成!请选择您需要的功能: ");
lbp:printf("1.求出最高成绩及其拥有者: ");
printf("2.增加新的成绩: ");
printf("3.退出 ");
printf("4.保存到文件成绩.txt ");
loop:scanf("%d",&k);
switch(k)
{
case1:for(k=0;k<l;k++)
{
if(max<score[k])
{
max=score[k];
}
}
printf("最高分为%d ",max);
for(k=0;k<l;k++)
{
if(max==score[k])
{
printf("最高分的同学的学号是:%d ",num[k]);
}
}
printf("请问您是否还需要继续计算么? 1.Yes 2.No");
scanf("%d",&a);
if(a==1)
gotolbp;
;break;
case2:gotolap;break;
case3:break;
case4:if((fp=fopen("成绩.txt","w+"))==NULL)//1.回答者把=改为==
{
printf("文件打开失败! ");
}
for(k=0;k<l;k++)
{
fprintf(fp,"%d%d",num[k],score[k]);//2.回答者加了一个空格
}
printf("文件保存成功! ");//3.回答者加
break;//4.回答者加
default:printf("输入错误,请重新输入: ");
gotoloop;break;
}
getchar();//5.回答者加
getchar();//6.回答者加
}
运行结果:
望采纳~
B. c语言怎么把一个数组里的值存入文本文件
不多说,直接贴代码:
#include <stdio.h>
#define MAXCNT 2
void main(int argc,char * argv[])
{
int buf[MAXCNT];
FILE * fpout;
int i = 0;
printf("输入个%d整数:",MAXCNT);
do
{
printf("输入第%d个整数,按回车确认:",i);
scanf("%d",&buf[i++]);
fflush(stdin);
}while(i < MAXCNT);
if(!(fpout = fopen("out.txt","a+")))
{//a+表已追加的方式打开,即如果文件已经有内容,不覆盖,而以w方式打开会覆盖
printf("打开文件出错!\n");
getchar();
exit(1);
}
else
{
i = 0;
do
{
fprintf(fpout,"%d\n",buf[i++]);
}while(i<MAXCNT);
}
if(!fclose(fpout))
{
printf("输入成功,请打开文件:%s\\out.txt查看!\n",argv[0]);
}
else
printf("关闭文件:%s\\out.txt出错!\n",argv[0]);
system("pause");
}
C. c语言,如何把二维数组中的字符串写入txt文档中
#include <fstream>
#include <iostream>
using namespace std;
int main()
{
int a[10][10];//10*10的二维数组。
int i,j;
//输入二维数组的值。
for(i = 0; i < 10; i ++)
{
for(j = 0; j < 10; j ++)
{
cin>>a[i][j];
}
}
ofstream out("out.txt");//打开文件。
for(i = 0; i < 10; i ++)
{
for(j = 0; j < 10; j ++)
{
out<<a[i][j]<<',';//将每个元素写入文件,以逗号分隔。
}
out << endl;//每行输出结束,添加换行。
}
return 0;
}
D. c语言中怎么把一个结构体数组写入文件
C语言把一个结构体数组写入文件分三步:
1、以二进制写方式(wb)打开文件
2、调用写入函数fwrite()将结构体数据写入文件
3、关闭文件指针
相应的,读文件也要与之匹配:
1、以二进制读方式(rb)打开文件
2、调用读文件函数fread()读取文件中的数据到结构体变量
3、关闭文件指针
参考代码如下:
#include<stdio.h>
structstu{
charname[30];
intage;
doublescore;
};
intread_file();
intwrite_file();
intmain()
{
if(write_file()<0)//将结构体数据写入文件
return-1;
read_file();//读文件,并显示数据
return0;
}
intwrite_file()
{
FILE*fp=NULL;
structstustudent={"zhangsan",18,99.5};
fp=fopen("stu.dat","wb");//b表示以二进制方式打开文件
if(fp==NULL)//打开文件失败,返回错误信息
{
printf("openfileforwriteerror ");
return-1;
}
fwrite(&student,sizeof(structstu),1,fp);//向文件中写入数据
fclose(fp);//关闭文件
return0;
}
intread_file()
{
FILE*fp=NULL;
structstustudent;
fp=fopen("stu.dat","rb");//b表示以二进制方式打开文件
if(fp==NULL)//打开文件失败,返回错误信息
{
printf("openfileforreaderror ");
return-1;
}
fread(&student,sizeof(structstu),1,fp);//读文件中数据到结构体
printf("name="%s"age=%dscore=%.2lf ",student.name,student.age,student.score);//显示结构体中的数据
fclose(fp);//关闭文件
return0;
}
fwrite(const void*buffer,size_t size,size_t count,FILE*stream);
(1)buffer:指向结构体的指针(数据首地址)
(2)size:一个数据项的大小(一般为结构体大小)
(3)count: 要写入的数据项的个数,即size的个数
(4)stream:文件指针。
E. C语言,如何把一个数组存放到txt文件中去
1、使用VS新建空工程,直接点击确定。
F. c语言,把数组写入文件里
buffer
指针,指向将要被写入的数据
size
项的大小,以字节为单位
count
项的数目
stream
文件指针
比如
将100个
int
数组写入
c:\data.datfile
*pf;int
data[100];
//数组初始化代码省略
G. C语言程序无法把数组写入文件,运行完之后,文件里没有数据
double类型需要写fprintf(fp2,"%lf,",yy[i]);
fscanf也是建议写:for(i=0;!feof(fp1);i++) fscanf(fp1,"%lf",&y[i]);
H. C语言如何把整形数组数据写入文件
#include<stdio.h>
int main()
{
FILE *file = NULL;
int a[5][5], i, j;
for(i = 0; i < 5; i++)
for(j = 0; j < 5; j++)
a[i][j] = 5*i+j;
if((file = fopen("a.txt", "w+")) != NULL)
{
for(i = 0; i < 5; i++)
{
for(j = 0; j < 5; j++)
fprintf(file, "%-8d", a[i][j]);
fprintf(file, "\n");
}
fclose(file);
}
return 0;
}