并行计算+Linux file操作

用户输入到文件并读取

基于stream

cpp 复制代码
#include <stdio.h>

int main()
{
    // 打开要写入的文件
    FILE *fp = fopen("file.txt", "w");
    if (fp == NULL) {
        printf("Failed to open file\n");
        return 1;
    }

    // 从命令行中读取输入
    char buffer[1024];
    printf("Enter text to write to file: ");
    fgets(buffer, sizeof(buffer), stdin);

    // 将读取到的输入写入文件
    fprintf(fp, "%s", buffer);

    // 关闭文件
    fclose(fp);

    printf("Text written to file successfully\n");

    return 0;
}
c 复制代码
#include <stdio.h>

int main()
{
    // 打开要读取的文件
    FILE *fp = fopen("file.txt", "r");
    if (fp == NULL) {
        printf("Failed to open file\n");
        return 1;
    }

    // 读取文件中的数据
    char buffer[1024];
    int n = fread(buffer, sizeof(char), sizeof(buffer), fp);
    if (n > 0) {
        printf("Read %d bytes from file\n", n);
        printf("File content: %s", buffer);
    } else {
        printf("Failed to read file\n");
    }

    // 关闭文件
    fclose(fp);

    return 0;
}

基于文件标识符

c 复制代码
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>

int main()
{
    int fd = open("file.txt", O_RDWR);
    if (fd == -1) {
        printf("Failed to open file\n");
        return 1;
    }

    // 读取文件中的数据
    char buffer[1024];
    int n = read(fd, buffer, sizeof(buffer));
    if (n > 0) {
        printf("Read %d bytes from file\n", n);
        printf("File content: %s", buffer);
    } else {
        printf("Failed to read file\n");
    }

    // 将数据写入文件
    char data[] = "Hello, world!";
    int m = write(fd, data, sizeof(data));
    if (m > 0) {
        printf("Wrote %d bytes to file\n", m);
    } else {
        printf("Failed to write file\n");
    }
    
    // 从用户输入中读取数据
    char buffer[1024];
    printf("Enter text to write to file: ");
    fgets(buffer, sizeof(buffer), stdin);
    // 将数据写入文件
    int n = write(fd, buffer, sizeof(buffer));
    if (n > 0) {
        printf("Wrote %d bytes to file\n", n);
    } else {
        printf("Failed to write file\n");
    }

    // 定位文件指针
    lseek(fd, 0, SEEK_END);
    long size = ftell(fd);
    printf("File size: %ld bytes\n", size);

    // 关闭文件
    close(fd);

    return 0;
}

按行写入和输出

c 复制代码
#include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE *fp;
    char *line = NULL;
    size_t len = 0;
    ssize_t nread;

    // 打开文件
    fp = fopen("file.txt", "r");
    if (fp == NULL) {
        printf("Failed to open file\n");
        return 1;
    }

    // 逐行读取文件并输出
    while ((nread = getline(&line, &len, fp)) != -1) {
        printf("%s", line);
    }

    // 关闭文件
    fclose(fp);
    if (line) {
        free(line);
    }

    return 0;
}
c 复制代码
#include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE *fp;
    char *line = NULL;
    size_t len = 0;
    ssize_t nread;

    // 打开文件
    fp = fopen("file.txt", "w");
    if (fp == NULL) {
        printf("Failed to open file\n");
        return 1;
    }

    // 从用户输入中读取数据,并按行写入文件
    printf("Enter text to write to file (type 'quit' to exit):\n");
    while (1) {
        nread = getline(&line, &len, stdin);
        if (nread == -1 || strncmp(line, "quit", 4) == 0) {
            break;
        }
        fprintf(fp, "%s", line);
    }

    // 关闭文件
    fclose(fp);
    if (line) {
        free(line);
    }

    return 0;
}
相关推荐
Elena_Lucky_baby22 分钟前
实现路由懒加载的方式有哪些?
前端·javascript·vue.js
Domain-zhuo22 分钟前
如何利用webpack来优化前端性能?
前端·webpack·前端框架·node.js·ecmascript
理想不理想v26 分钟前
webpack如何自定义插件?示例
前端·webpack·node.js
Zmxcl-00743 分钟前
IIS解析漏洞
服务器·数据库·microsoft
Stark、44 分钟前
【Linux】文件IO--fcntl/lseek/阻塞与非阻塞/文件偏移
linux·运维·服务器·c语言·后端
小华同学ai44 分钟前
ShowDoc:Star12.3k,福利项目,个人小团队的在线文档“简单、易用、轻量化”还专门针对API文档、技术文档做了优化
前端·程序员·github
王解1 小时前
Vue CLI 脚手架创建项目流程详解 (2)
前端·javascript·vue.js
刘大浪1 小时前
vue.js滑动到顶便锁定位置
前端·javascript·vue.js
小金刚®1 小时前
构建简洁之美:我的第一个前端页面
前端
新手上路狂踩坑2 小时前
Android Studio的笔记--BusyBox相关
android·linux·笔记·android studio·busybox