并行计算+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;
}
相关推荐
恋猫de小郭5 分钟前
Amper 正式转正 Kotlin Toolchain ,Gradle 未来何去何从
android·前端·flutter
敲代码的彭于晏13 分钟前
Bean 生命周期完全图解:前端同学也能看懂的 Spring 核心机制
java·前端·后端
IT_陈寒19 分钟前
Redis内存飙升的锅,原来是我没搞懂这个过期策略
前端·人工智能·后端
云浪26 分钟前
前端二进制数组完全指南:ArrayBuffer、TypedArray、DataView 一次讲透
前端·javascript
张风捷特烈28 分钟前
Flutter 类库大揭秘#02 | path_provider 各平台实现
前端·flutter
铁皮饭盒1 小时前
26年bunjs, elysia+pg一把梭, redis都省了
前端·javascript·后端
唐青枫1 小时前
别再只会用 cron:Linux systemd Timer 定时任务实战详解
linux
lichenyang45314 小时前
Docker 学习笔记(一):为什么需要镜像、容器和仓库?
前端
kyriewen14 小时前
别再对着 TypeScript 报错发呆了:我把 10 个最常见的红色波浪线翻译成了人话
前端·javascript·typescript