C语言文件操作

2024-05-17 10:22

1. C语言文件操作

今晚调试了很多遍,还是没发现我敢很确定的错误。
我的看法是:以r+方式打开文件时读取数据fgetc和写入数据fputc共用一个缓冲区,这样fputc如果不能及时将第二个字符b转换后写入文件,就会被fgetc捕捉到,这样就在第二个字符时形成死循环了。因为自己对文件缓冲区了解甚少,所以我的观点我也不能确定是否正确。
改了一下,运行结果正确,但是我不敢保证程序完全正确。其实涉及文件操作时,下面这两种方式更常见(网上示例代码很多):
一、读方式打开1.txt,写方式打开2.txt,把1.txt中的字母赋给一个char变量,然后将这个char变量转换为大写,再写到2.txt中。
二、先读,读完后再写
修改后的代码:
#include 
#include 
#include 

int main(int argc, char* argv[])
{ 
 char c;
 FILE *fp = fopen("C:\\1.txt", "r+");
 
 if(NULL == fp)
 {
  perror("fopen failed");
  exit(EXIT_FAILURE);
 }
 
 c = fgetc(fp);
 while (!feof(fp))
 {
  if(islower(c) != 0)
  {
   fseek(fp, ftell(fp) - 1, SEEK_SET);
   // 也可以用fseek(fp, -1, SEEK_CUR);替换
   fputc(toupper(c), fp);
   if(EOF == fflush(fp)) // 使数据及时写入文件而不是留在缓冲区
   {
    perror("fflush failed");
    fclose(fp); 
    exit(EXIT_FAILURE);
   }
  }
  c = fgetc(fp);
 }
 
 fclose(fp); 
 return 0;
} 
如果我的回答有问题,可以HI我,我们接着讨论。

C语言文件操作

2. C语言中对文件的操作

所谓打开,是取得文件的句柄号。C用fopen函数来打开文件,返回这个文件的句柄(一个寻找文件的变量,其中包含文件大小、文件类型、文件位置等信息)。“打开”后,文件内内容并不会保存在内存中,只有在使用的时候,从储存器上提取内容。
不知道你所说的输入字符是什么意思,如果指的是将内容保存在文件中的话,通常有以下几种方式。Type1:在文件末尾插入数据。Type2:将文件所有字节集读入内容,作为修改,然后重新保存在储存器中。
打开只是个代名词,比如说一个Box(箱子),你想在箱子里取东西,或者是放东西,都需要先把箱子打开。如果你想深入了解,那你需要研究文件系统(PS:这是操作系统核心的一部分)

3. c语言程序文件操作

首先,你需要建立一个.c或者.cpp文件,还要建立一个.txt文件进行操作处理,并且写上c语言的编译预处理,头文件,主函数。
 
2/6
然后你需要定一个文件指针,具体格式FILE*指针名。这个指针其实是一个结构指针,大家也不必过多的了解这个到底是什么,只知道他就这样用就可以了。
 
3/6
如果你想打开文件的话,你需要调用fopen函数,对于这个函数大家不必惊慌,其实很简单,具体的格式为 文件指针=fopen("文件路径+文件名","读写方式");
 
4/6
对于读写的方式有很多,比如r是只读,w是打开文件新建并且只写,r+是打开文件能读能写,w+新建文件能读能写。
 
5/6
如果程序把文件打开后不关闭,对于文件来说是很不安全的,所以需要关闭文件的函数fclose();如果想关闭p文件指针所指的文件,就写fclose(p);这个函数具有返回值,如果关闭成功,就返回0.如果关闭失败,就返回非0
 
6/6
此外,你可以调用fprintf()函数往文件里加东西,或者调用fputc向文件里添加字符,还可以调用fputs函数向文件里添加字符串。具体格式为
fprintf(文件指针,"添加格式",添加变量);
fputc(文件指针,添加的字符变量);
fputs(文件指针,添加的字符串);
 
注意事项
函数的参数不能少

c语言程序文件操作

4. C语言怎样对文件进行操作

 我们运用C语言编写程序的时候,经常需要对文件进行操作。那么该如何实现呢?下面我给大家分享一下。
  工具/材料  Sunlime Text
  打开SublimeText软件,新建一个C语言文件,然后导入C语言库,如下图所示
   接下来新建C语言的main函数,对文件的操作都会在main函数中进行,如下图所示
   接下来调用C语言的fopen函数对文件进行打开操作,如下图所示
   当打开文件以后就可以通过fgetc函数读取文件里面的内容,如下图所示

5. C语言怎样对文件进行操作

 我们运用C语言编写程序的时候,经常需要对文件进行操作。那么该如何实现呢?下面我给大家分享一下。
                                                                                                                    工具/材料                                                  Sunlime Text
                                                                                                                                                                                                                                                                                                                           01                                                              打开Sublime  Text软件,新建一个C语言文件,然后导入C语言库,如下图所示
                                                                                                                                                                                                                                  02                                                              接下来新建C语言的main函数,对文件的操作都会在main函数中进行,如下图所示
                                                                                                                                                                                                                                  03                                                              接下来调用C语言的fopen函数对文件进行打开操作,如下图所示
                                                                                                                                                                                                                                  04                                                              当打开文件以后就可以通过fgetc函数读取文件里面的内容,如下图所示
                                                                                                                                                                                                                                                  

C语言怎样对文件进行操作

6. C文件的C文件操作

在C语言中,文件操作都是由库函数来完成的,下面就是一些常用操作及函数:需要包含头文件:stdio.h fopen函数用来打开一个文件,其调用的一般形式为:文件指针名=fopen(文件名,打开方式) 其中,例如:FILE *fp;fp=fopen(file.a,r);其意义是在当前目录下打开文件file a,只允许进行“读”操作,并使fp指向该文件。打开方式主要有以下若干类:r:只读打开一个文本文件,只允许读数据w:只写打开或建立一个文本文件,只允许写数据a:追加打开一个文本文件,并在文件末尾写数据t:以文本的方式打开文件b:以二进制的方式打开文件+:可读可写另外rt+:读写打开一个文本文件,允许读和写wt+:读写打开或建立一个文本文件,允许读写at+:读写打开一个文本文件,允许读,或在文件末追加数据rb+:读写打开一个二进制文件,允许读和写wb+:读写打开或建立一个二进制文件,允许读和写ab+:读写打开一个二进制文件,允许读,或在文件末追加数据判断打开是否成功:if((fp=fopen(c:\\hzk16,rb)==NULL){printf(\nerror on open c:\\hzk16 file!);exit(-1);} 调用的一般形式是: fclose(文件指针); 例如:fclose(fp);正常完成关闭文件操作时,fclose函数返回值为0。如返回非零值则表示有错误发生。 fgetc函数的功能是从指定的文件中读一个字符,函数调用的形式为:字符变量=fgetc(文件指针);可参考下例:[例10.1]读入文件e10-1.c,在屏幕上输出。#includemain(){FILE *fp;char ch;if((fp=fopen(e10_1.c,rt))==NULL){printf(Cannot open file strike any key exit!);getch();exit(1);}ch=fgetc(fp);while (ch!=EOF){putchar(ch);ch=fgetc(fp);}fclose(fp);} fputc函数的功能是把一个字符写入指定的文件中,函数调用的形式为: fputc(字符量,文件指针);[例10.2]从键盘输入一行字符,写入一个文件, 再把该文件内容读出显示在屏幕上。参考下例:#includemain(){FILE *fp;char ch;if((fp=fopen(string,wt+))==NULL){printf(Cannot open file strike any key exit!);getch();exit(1);}printf(input a string:\n);ch=getchar();while (ch!='\n'){fputc(ch,fp);ch=getchar();}rewind(fp);ch=fgetc(fp);while(ch!=EOF){putchar(ch);ch=fgetc(fp);}printf(\n);fclose(fp);} 从指定的文件中读一个字符串到字符数组中,函数调用的形式为: fgets(字符数组名,n,文件指针);其中的n是一个正整数。表示从文件中读出的字符串不超过 n-1个字符。在读入的最后一个字符后加上串结束标志'\0'。例如:fgets(str,n,fp);的意义是从fp所指的文件中读出n-1个字符送入字符数组str中。[例10.4]从e10_1.c文件中读入一个含10个字符的字符串。#includemain(){FILE *fp;char str[11];if((fp=fopen(e10_1.c,rt))==NULL){printf(Cannot open file strike any key exit!);getch();exit(1);}fgets(str,11,fp);printf(%s,str);fclose(fp);}本例定义了一个字符数组str共11个字节,在以读文本文件方式打开文件e101.c后,从中读出10个字符送入str数组,在数组最后一个单元内将加上'\0',然后在屏幕上显示输出str数组。输出的十个字符正是例10.1程序的前十个字符。对fgets函数有两点说明:1. 在读出n-1个字符之前,如遇到了换行符或EOF,则读出结束。2. fgets函数也有返回值,其返回值是字符数组的首地址。 puts函数的功能是向指定的文件写入一个字符串,其调用形式为: fputs(字符串,文件指针) 其中字符串可以是字符串常量,也可以是字符数组名,或指针 变量,例如:fputs(“abcd“,fp);其意义是把字符串“abcd”写入fp所指的文件之中。[例10.5]在例10.2中建立的文件string中追加一个字符串。#includemain(){FILE *fp;char ch,st[20];if((fp=fopen(string,at+))==NULL){printf(Cannot open file strike any key exit!);getch();exit(1);}printf(input a string:\n);scanf(%s,st);fputs(st,fp);rewind(fp);ch=fgetc(fp);while(ch!=EOF){putchar(ch);ch=fgetc(fp);}printf(\n);fclose(fp);}本例要求在string文件末加写字符串,因此,在程序第6行以追加读写文本文件的方式打开文件string 。 然后输入字符串, 并用fputs函数把该串写入文件string。在程序15行用rewind函数把文件内部位置指针移到文件首。 再进入循环逐个显示当前文件中的全部内容。fread/fwrite:文件块读写(二进制读写利器) C语言还提供了用于整块数据的读写函数。 可用来读写一组数据,如一个数组元素,一个结构变量的值等。读数据块函数调用的一般形式为: fread(buffer,size,count,fp); 写数据块函数调用的一般形式为: fwrite(buffer,size,count,fp); 其中buffer是一个指针,在fread函数中,它表示存放输入数据的首地址。在fwrite函数中,它表示存放输出数据的首地址。 size 表示数据块的字节数。count 表示要读写的数据块块数。fp 表示文件指针。例如:fread(fa,4,5,fp); 其意义是从fp所指的文件中,每次读4个字节(一个实数)送入实数组fa中,连续读5次,即读5个实数到fa中。[例10.6]从键盘输入两个学生数据,写入一个文件中, 再读出这两个学生的数据显示在屏幕上。#includestruct stu{char name[10];int num;int age;char addr[15];}boya[2],boyb[2],*pp,*qq;main(){FILE *fp;char ch;int i;pp=boya;qq=boyb;if((fp=fopen(stu_list,wb+))==NULL){printf(Cannot open file strike any key exit!);getch();exit(1);}printf(\ninput data\n);for(i=0;iname,&pp->num,&pp->age,pp->addr);pp=boya;fwrite(pp,sizeof(struct stu),2,fp);rewind(fp);fread(qq,sizeof(struct stu),2,fp);printf(\n\nname\tnumber age addr\n);for(i=0;iname,qq->num,qq->age,qq->addr);fclose(fp);}本例程序定义了一个结构stu,说明了两个结构数组boya和 boyb以及两个结构指针变量pp和qq。pp指向boya,qq指向boyb。程序第16行以读写方式打开二进制文件“stu_list”,输入二个学生数据之后,写入该文件中, 然后把文件内部位置指针移到文件首,读出两块学生数据后,在屏幕上显示。 fscanf函数,fprintf函数与前面使用的scanf和printf 函数的功能相似,都是格式化读写函数。 两者的区别在于 fscanf 函数和fprintf函数的读写对象不是键盘和显示器,而是磁盘文件。这两个函数的调用格式为: fscanf(文件指针,格式字符串,输入表列); fprintf(文件指针,格式字符串,输出表列); 例如:fscanf(fp,%d%s,&i,s);fprintf(fp,%d%c,j,ch);用fscanf和fprintf函数也可以完成例10.6的问题。修改后的程序如例10.7所示。[例10.7]#includestruct stu{char name[10];int num;int age;char addr[15];}boya[2],boyb[2],*pp,*qq;main(){FILE *fp;char ch;int i;pp=boya;qq=boyb;if((fp=fopen(stu_list,wb+))==NULL){printf(Cannot open file strike any key exit!);getch();exit(1);}printf(\ninput data\n);for(i=0;iname,&pp->num,&pp->age,pp->addr);pp=boya;for(i=0;iname,pp->num,pp->age,pp->addr);rewind(fp);for(i=0;iname,&qq->num,&qq->age,qq->addr);printf(\n\nname\tnumber age addr\n);qq=boyb;for(i=0;iname,qq->num, qq->age,qq->addr);fclose(fp);}与例10.6相比,本程序中fscanf和fprintf函数每次只能读写一个结构数组元素,因此采用了循环语句来读写全部数组元素。还要注意指针变量pp,qq由于循环改变了它们的值,因此在程序的25和32行分别对它们重新赋予了数组的首地址。

7. C语言文件

.c文件是C语言源代码文件,其后缀为.c,是一种文件类型,由文本编辑器创建,包含可以编译成机器可执行文件的C语言程序代码。它以纯文本形式保存源代码,是C语言的源文件,是程序的构建的基础。.c文件通常可以用C/C++编译器编译为机器可执行文件,用于在系统上运行。【摘要】
C语言文件【提问】
.c文件是C语言源代码文件,其后缀为.c,是一种文件类型,由文本编辑器创建,包含可以编译成机器可执行文件的C语言程序代码。它以纯文本形式保存源代码,是C语言的源文件,是程序的构建的基础。.c文件通常可以用C/C++编译器编译为机器可执行文件,用于在系统上运行。【回答】
【提问】
【提问】
,【提问】
【提问】
文件只能创建出来,但无法写入,shuju.txt的大小一直是0KB【提问】
无法写入的原因可能是文件没有正确的写入权限,可以尝试把文件的权限设置为可写入状态,即右键单击文件,选择“属性”,然后在弹出的窗口中勾选“允许更改文件的内容”选项。【回答】

C语言文件

8. C语言文件

不是很明白你所描述的操作情况。2.如果以前同样的操作没有出现过这样的情况,则可能是可能是操作系统有问题了。也有可能是内存有问题了。3.建议,先查看一下内存使用情况,再用一个体量极小的文件,例如4K左右的,重复你所说的操作,看是否有卡顿现象。4.如果小文件搬运很正常,大文件挪移才卡顿,那多数是内存问题。可:  (1)拆下内存,清洁插槽、内存进手指,装回去在试试。  (2)换内存试试。  (3)32位操作系统内存加到4GB,是64位操作系统的加到8GB。5.如果小文件挪移也不正常,或者内存以足够大,则重装系统。6.以上建议仅供参考。运行之后D盘中有一个dome文件但其内为空【摘要】
C语言文件【提问】
【提问】
【提问】
文件只能创建出来,但无法写入,shuju.txt的大小一直是0KB【提问】
不是很明白你所描述的操作情况。2.如果以前同样的操作没有出现过这样的情况,则可能是可能是操作系统有问题了。也有可能是内存有问题了。3.建议,先查看一下内存使用情况,再用一个体量极小的文件,例如4K左右的,重复你所说的操作,看是否有卡顿现象。4.如果小文件搬运很正常,大文件挪移才卡顿,那多数是内存问题。可:  (1)拆下内存,清洁插槽、内存进手指,装回去在试试。  (2)换内存试试。  (3)32位操作系统内存加到4GB,是64位操作系统的加到8GB。5.如果小文件挪移也不正常,或者内存以足够大,则重装系统。6.以上建议仅供参考。运行之后D盘中有一个dome文件但其内为空【回答】
最新文章
热门文章
推荐阅读