c語言文件並修改
『壹』 怎麼用c語言修改文件內容
提供思路:
先一組一組數據讀取,然後進行比較,看是不是你要修改的數據(如果是你要修改的數據,那此時文件的指針已經指向下一組數據了),然後用fseek(fp,-sizeof(type),seek_cur);使文件指針指向該數據塊(fp為文件指針,sizeof(type)為數據長度,type是我指定,你可以換成你需要的數據類型,比如int或是struct等)
如果你知道數據是第幾組就更好了,直接用fseek(fp,(n-1)*sizeof(type),seek_set);就能找到位置了
用前面兩種方法的前提是,你存入數據的時候用的都是以數據塊的方式寫入的同一種數據(比如只用fwrite()函數寫入的struct類型數據),如果用的是復合方式寫入,比如用了fwrite()、fputc()、fprintf(),這樣的話,定位就有問題了。
『貳』 C語言如何打開一個文件然後修改保存
假定開始沒有這個文件,在插入數據時建立文件。
FILE *fp;
fopen("c:\\a.txt","wt+");這個是打開以寫或讀的方式打開文件。打開後就可以寫入了,用for循環,例如你有4組數據,
for(int i;i<=4;i++)
{
fprintf(fp,"%s%s%s%s",a,b,c,d);
}
fprintf();就實現了把數據寫入文件的功能。跟printf();差不多,只是一個是往文件里寫,一個是往屏幕上寫。
上面就實現了插入操作。
如果你想刪除一個數據,就先在數組中刪除,然後重新進行上述寫入文件操作。 要是讀取數據的話就在打開文件時:fp = fopen("c:\\a.txt",r+);
要是還不明白的話就看下書,這兩個函數就可以滿足你的需要。
『叄』 c語言修改文件
// crt_fgets.c
// This program uses fgets to display
// a line from a file on the screen.
//
#include <stdio.h>
int main( void )
{
FILE *stream;
char line[100];
if( fopen_s( &stream, "crt_fgets.txt", "r" ) == 0 )
{
if( fgets( line, 100, stream ) == NULL)
printf( "fgets error\n" );
else
printf( "%s", line);
fclose( stream );
}
}
『肆』 C語言怎麼修改文件信息
把文件裡面數據讀出來,在內存裡面改掉,再把改後的數據寫回去
c操作文件沒有修改的方式,只有追加,不過也不適合你的需最常用的就是這樣,先讀,改 再重寫
『伍』 c語言從文件讀取參數並修改
//c語言從讀取並修改,參考實例如下:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
#define FM "%s %s %s"
#define FMT "%s %s %s\n"
#define DT t.no,t.name,t.other
struct
{ char no[20]; //學號
char name[20]; //姓名
char other[20]; //其它
}stu[50],t; //t為臨時變數
void add()
{
FILE *fp;
fp=fopen("data.txt","a+"); //追加
printf("Input NO,Name,Other:\n");
scanf(FM,DT);
fprintf(fp,FMT,DT);
fclose(fp);
}
void show()
{
FILE *fp;
fp=fopen("data.txt","r");
if(fp==NULL)exit(1); //異常處理
while(1)
{
fscanf(fp,FM,DT);
if(fgetc(fp)==EOF)break; //遇文件結束符
printf(FMT,DT);
}
fclose(fp);
}
void find()
{
FILE *fp;
char str[20];
int flag=0; //記錄是否存在要查找的學生
fp=fopen("data.txt","r");
if(fp==NULL)exit(1);
printf("Input NO:");
scanf("%s",str); //輸入要查找的學號
while(1)
{
fscanf(fp,FM,DT);
if(fgetc(fp)==EOF)
{
if(flag==0) printf("no this student!\n"); //文件讀取結束還沒找到該學生
break;
}
if(strcmp(str,t.no)==0) //學號匹配
{
printf(FMT,DT); //輸出
flag=1;
}
}
fclose(fp);
}
void del(int n)
{
FILE *fp;
char str[20],name1[20],other1[20];
int i;
fp=fopen("data.txt","r");
if(fp==NULL)exit(1);
printf("Input NO:");
scanf("%s",str); //輸入學號
for(i=0;i<50;i++) fscanf(fp,FMT,stu[i].no,stu[i].name,stu[i].other); //讀取全部信息
fclose(fp);
fp=fopen("data.txt","w");
for(i=0;i<50;i++)
{
if(strcmp(str,stu[i].no)!=0) //學號匹配
fprintf(fp,FMT,stu[i].no,stu[i].name,stu[i].other); //原樣寫回
else
{
printf(FMT,stu[i].no,stu[i].name,stu[i].other); //輸出修改或刪除的信息
if(n==0) //修改
{
printf("Input the Name:");scanf(" %s",name1); //修改名字
printf("Input other:");scanf(" %s",other1); //修改其它
fprintf(fp,FMT,str,name1,other1); //寫入修改信息
}
}
}
fclose(fp);
}
void menu()
{
char ch;
printf("\n=====================\n");
printf("== 1.Add 2.Show ==\n== 3.Del 4.Revise ==\n== 5.Find 0.Exit ==");
printf("\n=====================\n");
printf("Choice:");
ch=getche();printf("\n");//scanf(" %c",&ch);
switch(ch)
{
case '1':add();break; //添加
case '2':show();break; //顯示
case '3':del(1);break; //刪除
case '4':del(0);break; //修改
case '5':find();break; //查找
case '0':exit(0); //退出
default:printf("Input error!\n");break;
}
}
int main()
{
while(1){system("cls");menu();getchar();}//system("pause");
return 0;
}
『陸』 c語言 修改文件
/*大寫字母轉換成小寫*/
char Lower(char Upper)
{
if(Upper<=122&&Upper>=97)
Upper-=32;
return Upper;
}
完整專:屬
#include<stdio.h>
char Lower(char Upper)
{
if(Upper<=122&&Upper>=97)
Upper-=32;
return Upper;
}
void main()
{
FILE fp1,fp2;
char p;
fp1=open("C:\\config.ini");
fp2=open("D:\\config.ini","w");
while(!p)
fprintf(fp1,Lower(p),"w");
fclose(fp1);
fclose(fp2);
}
『柒』 C語言怎麼修改文件內容
不好意思
目前我只會修改2進制文件
以''r+t"形式打開
fseek()定位文件指針到你要修改的位置
fwrite()直接放進你的數據
完成修改
對於文本文件我沒辦法
郁悶