文件操作(写)

复制代码
/***
file.c
***/
#include<stdio.h>

int main()
{
    //用写的方式打开一个文件    
    //w的意思是文件如果不存在,就建立一个文件,如果文件存在就覆盖
    FILE *p = fopen("/home/exbot/wangqinghe/C/20190716/file1.txt","w");
    fputs("hello world\n",p);    //向文件中写入一个字符串
    fclose(p);    //关闭这个文件
    return 0;
}
复制代码
复制代码
/***
file1.txt
***/
#include<stdio.h>
#include<string.h>
int main()
{
    char s[1024] = {0};
    FILE *p = fopen("/home/exbot/wangqinghe/C/20190716/file1.txt","w");
    
    while(1)
    {
        memset(s,0,sizeof(s));
        scanf("%s",s);
        if(strcmp(s,"exit") == 0)
        {
            break;
        }
        int len = strlen(s);
        s[len] = '\n';
        fputs(s,p);
    }
    fclose(p);
    return 0;
}
复制代码

缺陷:scanf输入会将空格自动隔开下一行。

gcc已经禁止使用gets函数了。

接受带空格的字符出的方法,vs中可以使用gets_s函数,

linux环境下只能使用char *fgets(char *buf, int bufsize, FILE *stream);

fget(str,maxn,stdin); stdin表示接受从键盘中输入。

但是fgets输入是在缓冲区中读入的,不能接受在输入的时候判断输入的字符串来中断循环。

复制代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
const int maxn  = 1024;
int main()
{
    char s[1024] = {0};
    FILE *p = fopen("/home/exbot/wangqinghe/C/20190716/file1.txt","w");
    
    while(fgets(s,maxn,stdin) != EOF)
    {
        printf("s = %s\n",s);
        fputs(s,p);
    }
    fclose(p);
    return 0;
}
复制代码

可以输入到字符串中并打印出来,但是手动结束ctrl+v结束的话不能输出到文件中。

 

还可以使用scanf(“%[^\n]”,str);来实现这个功能

复制代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
const int maxn  = 10;
int main()
{
    char s[1024] = {0};
    FILE *p = fopen("/home/exbot/wangqinghe/C/20190716/file1.txt","w");
    
    while(1)
    {
        //memset(s,0,sizeof(s));
        scanf("%[^\n]",s);
        if(strcmp(s,"exit") == 0)
            break;
        printf("s = %s\n",s);
        fputs(s,p);
    }
    fclose(p);
    return 0;
}
复制代码

有问题,待解决。

posted @   王清河  阅读(227)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示