当前位置:首页 » 编程语言 » c语言文本文件插入
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言文本文件插入

发布时间: 2022-05-30 01:50:17

c语言如何实现对txt文件的读取和写入

1、使用VS新建空工程,直接点击确定,如下所示。

② C语言如何将一行文本插入到文本文档的特定一行

1、关键使用这几个函数
int fseek (FILE *stream,long offset,int fromwhere);
long ftell(FILE *stream);
int rewind(FILE *stream);

2、例程:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#include<Windows.h>
/*读出文件放到数组中,新增数据插入到该数组中;
重新将数组中的数据写入该文件中
*/
voidmain(intargc,char*agrv)
{
FILE*fp;
charname[20];//输入变量
intsum;//输入变量
charfName[10][20];//可存储10个人名
intfScore[10];//存储10个分数记录
charbuff1[20];
charbuff2[20];
inti=0;
//打开存储文件
if((fp=fopen("c:\scorelist.txt","r"))==NULL)
{
printf("Cannotopenthefile");
getch();
exit(0);
}
else
{
while(!feof(fp))
{
ZeroMemory(buff1,sizeof(buff1));//清空内存
ZeroMemory(buff2,sizeof(buff1));
fgets(buff1,sizeof(buff1),fp);//读取名称
fgets(buff2,sizeof(buff2),fp);//读取第二行分数
if(strcmp(buff1,"")==0)
{
continue;
}
else
{
strcpy(fName[i],buff1);
printf("%s",fName[i]);//输出名称
fScore[i]=atoi(buff2);//将字符型转换成int型
printf("%i ",fScore[i]);//打印输出分数值
}
i++;
}
}
fclose(fp);
//打开存储文件,将排好序的数据重新写入文件中
if((fp=fopen("c:\scorelist.txt","w"))==NULL)
{
printf("Cannotopenthefile");
getch();
exit(0);
}
else
{
printf("Inputthenewname: ");
scanf("%s",name);
printf("Inputthenewscore: ");
scanf("%i",&sum);
intj=0;
//获取新增积分排序位置
while(sum<fScore[j])
{
j++;

}
//移动数据重新对数组排序,从后往前排序
intm=i;
while(i>j)
{
strcpy(fName[i],fName[i-1]);
fScore[i]=fScore[i-1];
i--;
}
strcpy(fName[j],name);
strcat(fName[j]," ");
fScore[j]=sum;
//写入文本文件
intk=0;
while(k<=m)
{
fputs(fName[k],fp);
fprintf(fp,"%i ",fScore[k]);
k++;
}
}
fclose(fp);
}

③ C语言中,怎么在一个文本文件中的指定位置插入数据而不会把后面的内容覆盖

c语言并没有提供这样的库函数,需要自己写。

你写将要插入位置后面的文件内容读到缓冲,然后定位文件偏移量插入数据,在将读出来的写入。

因为文件在磁盘上是连续存放的,不可能说直接在中间插入内容而不覆盖原来的,别的语言提供的都是自己按照上述思路写的。或者除非有某些文件系统存放方式不同(但我没见过)。

④ C语言如何在文件中指定的一行上插入一行

由于你的文件类型是文本文件,不是二进制文件,所以麻烦些。但是步骤还是好做的。基本思路:从第一个文本文件中用 fgets() 函数读出一行数据,对读出的每一行数据进行判断,如果需要在它的适当位置插入一行,你就把相应的新内容、以及该行的内容写到第二个文本文件中。如果不需要在该位置插入一行,那就直接将该行数据用 fprintf() 函数写入第二个文本文件中。

⑤ c语言实现文本编辑器的插入实例

举手之劳,帮你弄了。
像这个题,没有点分一般是没人来的,但小可贵在钓,不在鱼。弄了算了。
本题的一个完整的c程序如下,win-tc和Dev-c++下运行通过。
#include <stdio.h>
#define MAXLEN 80
#define MAXLINE 200
char buffer[MAXLEN],fname[120];
char *lineptr[MAXLINE];
FILE *fp;
void edit(),replace(),insert(),delete(),quit();
char comch[]="EeRrIiDdQq";/*命令符*/
void(*comfun[])()={edit,replace,insert,delete,quit};/*对应处理函数*/
int modified=0,/*正文被修改标志*/
last;/*当前正文行数*/
char *chpt;/*输入命令行字符指针*/

main()
{
int j;

last=0;
while(1)
{
printf("\nInput a command:[e,r,i,d,q].\n");
gets(buffer);/*读入命令行*/
for(chpt=buffer;*chpt==''||*chpt=='\t';chpt++);/*掠过空白符*/
if(*chpt=='\0') continue;/*空行重新输入*/
for(j=0;comch[j]!='\0'&&comch[j]!=*chpt;j++);/*查命令符*/
if(comch[j]=='\0') continue;/*非法命令符*/
chpt++;/*掠过命令符,指向参数*/
(*comfun[j/2])();/*执行对应函数*/
fprintf(stdout,"The text is:\n");
for(j=0;j<last;j++)/*显示正文*/
fputs(lineptr[j],stdout);
}
}
void quit()
{
int c;
if(modified)/* 如正文被修改 */
{
printf("Save? (y/n)");
while(!(((c=getchar())>='a'&&c<='z')||(c>='A'&&c<='Z')));
if(c=='y'||c=='Y')
save(fname); /* 保存被修改过的正文 */
}
for(c=0;c<last;c++)
free(lineptr[c]); /* 释放内存 */
exit(0);
}

void insert()
{
int k,m,i;
sscanf(chpt,"%d%d",&k,&m); /* 读入参数 */
if(m<0||m>last||last+k>=MAXLINE)/* 检查参数合理性 */
{
printf("Error!\n");
return;
}
for(i=last;i>m;i--)/* 后继行向后移 */
lineptr[i+k-1]=lineptr[i-1];
for(i=0;i<k;i++) /* 读入k行正文,并插入 */
{
fgets(buffer,MAXLEN,stdin);
lineptr[m+i]=(char *)malloc(strlen(buffer)+1);
strcpy(lineptr[m+i],buffer);
}
last+=k; /* 修正正文行数 */
modified=1; /* 正文被修改 */
}

void delete()
{
int i,j,m,n;
sscanf(chpt,"%d%d",&m,&n); /* 读入参数 */
if(m<=0||m>last||n<m) /* 检查参数合理性 */
{
printf("Error!\n");
return;
}
if(n>last)
n=last; /* 修正参数 */
for(i=m;i<=n;i++) /* 删除正文 */
free(lineptr[i-1]);
for(i=m,j=n+1;j<=last;i++,j++)
lineptr[i-1]=lineptr[j-1];
last=i-1; /* 修正正文行数 */
modified=1; /* 正文被修改 */
}

void replace()
{
int k,m,n,i,j;
sscanf(chpt,"%d%d%d",&k,&m,&n); /* 读入参数 */
if(m<=0||m>last||n<m||last-(n-m+1)+k>=MAXLINE)/* 检查参数合理性 */
{
printf("Error!\n");
return;
}
/* 先完成删除 */
if(n>last)
n=last; /* 修正参数 */
for(i=m;i<=n;i++) /* 删除正文 */
free(lineptr[i-1]);
for(i=m,j=n+1;j<=last;i++,j++)
lineptr[i-1]=lineptr[j-1];
last=i-1;
/* 以下完成插入 */
for(i=last;i>=m;i--)
lineptr[i+k-1]=lineptr[i-1];
for(i=0;i<k;i++)
{
fgets(buffer,MAXLEN,stdin);
lineptr[m+i-1]=(char *)malloc(strlen(buffer)+1);
strcpy(lineptr[m+i-1],buffer);
}
last+=k; /* 修正正文行数 */
modified=1; /* 正文被修改 */
}

save(char *fname) /* 保存文件 */
{
int i;
FILE *fp;
if((fp=fopen(fname,"w"))==NULL)
{
fprintf(stderr,"Can't open %s.\n",fname);
exit(1);
}
for(i=0;i<last;i++)
{
fputs(lineptr[i],fp);
free(lineptr[i]);
}
fclose(fp);
}

void edit() /* 编辑命令 */
{
int i;
FILE *fp;
i=sscanf(chpt,"%s",fname); /* 读入文件名 */
if(i!=1)
{
printf("Enter file name.\n");
scanf("%s",fname);
}
if((fp=fopen(fname,"r"))==NULL) /* 读打开 */
{
fp=fopen(fname,"w"); /* 如不存在,则创建文件 */
fclose(fp);
fp=fopen(fname,"r"); /* 重新读打开 */
}
i=0;
while(fgets(buffer,MAXLEN,fp)==buffer)
{
lineptr[i]=(char *)malloc(strlen(buffer)+1);
strcpy(lineptr[i++],buffer);
}
fclose(fp);
last=i;
}

⑥ 怎么把c语言编的程序的结果输入到一个文本文件中

c语言编的程序的结果输入到一个文本文件中可以使用fprintf;

例:

#include<stdio.h>

main(){

FILE *fpt;

fpt = fopen("wendangming.txt","w");//打开文档,写入

fprintf(fpt,"Hello world");

fclose(fpt);

}

(6)c语言文本文件插入扩展阅读

它打开一个文本文件,逐个字符地读取该文件

#include <iostream>

#include <fstream>

using namespace std;

int main()

{

fstream testByCharFile;

int num;

char c;

testByCharFile.open("6.5.cpp",ios::in);

while(!testByCharFile.eof())

{

testByCharFile >> c;

num++;

}

testByCharFile.close();

cout << num << endl;

}

⑦ C语言怎么导入文本里面的内容数据

1、c语言并没有提供这样的库函数,需要自己写。将要插入位置后面的文件内容读到缓冲,然后定位文件偏移量插入数据,在将读出来的写入。

⑧ C语言中怎么插入文件记录

1、可以使用fseek()来指定文件位置。
函数原型:int fseek(FILE *stream, long offset, int fromwhere);
函数说明:函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere(偏移起始位置:文件头0(SEEK_SET),当前位置1(SEEK_CUR),文件尾2(SEEK_END))为基准,偏移offset(指针偏移量)个字节的位置。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置。
返回值:如果执行成功,stream将指向以fromwhere为基准,偏移offset(指针偏移量)个字节的位置,函数返回0。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置,函数返回一个非0值。

2、例程:向test.txt的末尾添加“this is a text"的字符串。

#include<stdio.h>
#include<string.h>
intmain()
{
constchar*szwrite="thisisatext";
FILE*fp=fopen("test.txt","a+");
if(fp==0){
printf("can'topenfile ");
return0;
}
fseek(fp,0,SEEK_END);
fwrite(szwrite,strlen(szwrite)*sizeof(char),1,fp);
fclose(fp);
return0;
}

⑨ C语言怎么把字符串用fprintf写入文本文件

把把字符串写入文件,基本示例如下:

FILE *fp;

char s[]= "hello world!";

char c = ' ';

fp = fopen("file.txt","a");

fprintf(fp,"%s",s); //字符串使用%s

fprintf(fp,"%c",c); //字符使用%cfclose(fp);从文件读取到字符串 char s1[30];fp=fopen("file.txt","r");fscanf(fp, "%[^ ] ", s1);printf("%s ",s1);fclose(fp); 本来挺简单的一件事,可是让我头疼了好几个小时。

在前面写了 fp = fopen("file.txt","a");

fprintf(fp,"%s",s); //字符串使用%s

但是fclose(fp);这句被我写在了return 0;之前,然后字符串死活写不进文件里面去。后来终于发现是因为使用了while(1)循环读取端口数据,所以一直没有执行fclose(fp);这句,才导致文件里面一直是空的。所以fclose(fp);这句话不要忘记了哦~~ :)

⑩ C语言如何写入文本文件

1、首先输入下方的代码

#include <stdio.h>

int main()

{

//下面是写数据,将数字0~9写入到data.txt文件中

FILE *fpWrite=fopen("data.txt","w");

if(fpWrite==NULL)

{

return 0;

}

for(int i=0;i<10;i++)

fprintf(fpWrite,"%d ",i);

fclose(fpWrite);

//下面是读数据,将读到的数据存到数组a[10]中,并且打印到控制台上

int a[10]={0};

FILE *fpRead=fopen("data.txt","r");

if(fpRead==NULL)

{

return 0;

}

for(int i=0;i<10;i++)

{

fscanf(fpRead,"%d ",&a[i]);

printf("%d ",a[i]);

}

getchar();//等待

return 1;

}