C语言如何写入文本文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言如何写入文本文件相关的知识,希望对你有一定的参考价值。

这是按照学号排序并写入二进制文件,那怎么排序并且写出文本文件 并且读出这些信息呢?结构体定义中 有
struct Student

int num; /*学号*/
char name[10]; /*姓名*/
int grades[M]; /*共有M们功课*/
int total; /*总分*/
int rank; /*排名*/
char sex[4]; /*性别*/
Stu[N];
void Selection_num(struct Student *st,int n)

FILE *fp;
int i,j,min,z;
struct Student temp;
for(i=0;i<n-1;i++)

min=i;
for(j=i+1;j<n;j++)

if(st[j].num<st[min].num)
min=j;

if(min!=i)

temp=st[i];
st[i]=st[min];
st[min]=temp;


if((fp=fopen("stu_info.dat","w+"))==NULL)

printf("can not open file! ");
exit (0);

for(z=0;z<n;z++)

if(fwrite(&st[z],sizeof(struct Student),1,fp)!=1)
printf("File write error\n");

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;  

  

2、面是写入到txt后的截图:

3、下面是读取文件后打印数据到控制台的截图。

参考技术A

  使用c语言标准文件I/O库中的函数即可。具体来说:

  1、fopen()打开文件。

  2、fseek()调整文件位置。

  3、fwrite()写入数据。

  4、fclose()关闭打开的文件。示例如下,打开1.txt,并向文件后面添加hello world的字符串。

#include <stdio.h>
#include <string.h>
int main()

FILE *fp = fopen("1.txt", "a+");
if (fp==0)  printf("can't open file\\n"); return 0;
fseek(fp, 0, SEEK_END);
char sz_add[] = "hello world\\n";
fwrite(sz_add, strlen(sz_add), 1, fp);
fclose(fp);
return 0;

参考技术B 如果打算用fwrite()/fread()读写文件,在打开文件时应该用b模式,即:

if((fp=fopen("stu_info.dat","wb+"))==NULL)追问

什么意思?

追答

意思是用它替换原程序中的对应语句后重试。

追问

你好
我那个是写入二进制文件的
我现在要写入一个文本文件
但是不知道怎么写
结构体怎么写呢?
谢谢你

追答

如果要写文本文件,应该用fprintf()/fputs()/fputc()等函数,以你的目的,应该用fprintf()函数,它的用法和printf()函数是相似的,只不过多了一个用于指定写入文件的FILE *指针参数,示例如下:

fprintf(fp,"%d\t%s\n",st[0].num,st[0].name);

如果用这里提到的这些函数,那么打开文件的模式不用加b

追问

能给我写下么?
我看书了好久
还是没懂啊
纠结呢
呵呵
你给我写一个看下
就写输入学号的
其他的我模仿就好了
谢谢哈

追答

原程序的其余部分不用改变,把最后的循环改为类似如下形式即可。
for(z=0;z<n;z++)

fprintf(fp,"%d\t%s\n",st[0].num,st[0].name);//用学号和姓名示例,可以自行添加其它成员

追问

是fprintf?不是fscanf么?

追答

正如printf()是输出而scanf()是读取一样,fprintf()是向文件输出格式化文本的,而fscanf()是从文件读取数据的。

本回答被提问者采纳
参考技术C 用File......只能给你这点提示,,自己好好的想想,把书好好的看看.我想你会做的追问

晕死
你等于白说
谁不知道用FILE啊

如何在c中的文件上写入文本?

【中文标题】如何在c中的文件上写入文本?【英文标题】:How can i write text on a file in c? 【发布时间】:2021-08-15 03:37:02 【问题描述】:

我正在用 c 编写一个简单的文本编辑器,我定义了一个名为 node 的结构并创建了一个名为 textbuffer 的链表。我正在尝试为文本编辑器创建一个插入函数。到目前为止的代码如下:

#include <stdio.h>
#include <string.h>

struct node

    char statement[40];
    int next;
;
struct node textbuffer[25];

int free_head;
int inuse_head;

void insert(int line, char* stat)

    FILE *file;
    file=fopen("texteditor.txt","w");
    
    if(file!=NULL)
    
        int i;
        int k;
        
        strcpy(textbuffer[line].statement,stat);
        textbuffer[line].next=line+1;
        fprintf(file,textbuffer[line].statement);
        
        for(i=0;i<=25;i++)
        
            if(textbuffer[i].statement==NULL)
            
                free_head=i;
                break;
            
        
        
        for(k=0;k<=25;k++)
        
            if(textbuffer[k].statement!=NULL)
            
                inuse_head=k;
                break;
            
        
    
    else
    
        printf("File couldn't found.");
    
    fclose(file);



int main()

    insert(1,"Hello World");
    return 0;   



问题是当 texteditor.txt 文件为空时,当我运行代码时它会在文件中写入“Hello World”,这很好,但是当我第二次运行它时,我希望它会写入“HelloWorldHelloWorld”但它什么也没做。它仍然是“Hello World”。我该如何解决这个问题?

【问题讨论】:

查看打开文件时可以使用的不同模式。 en.cppreference.com/w/cpp/io/c/fopen "w" 模式会破坏现有文件的内容。 您使用索引而不是指针进行链接。有趣的。我从未见过它,甚至从未想过这种可能性。有什么特别的原因吗? 【参考方案1】:

您可以简单地以附加模式打开文件:

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

更多信息:https://en.cppreference.com/w/c/io/fopen

【讨论】:

以上是关于C语言如何写入文本文件的主要内容,如果未能解决你的问题,请参考以下文章

如何将在c语言中生成的数据保存到文本文件中?

求c语言读取写入文本文件的函数实现

c语言如何读写二进制

C语言打开其他目录下的文本文件

C语言如何以插入方式写入文件

Java中,怎样把一段文字写入一个文本文件中?