C 文件读写 fopen fscanf fgets

C 文件读写 fopen fscanf fgets

#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <stddef.h>
#include <time.h>

int main() {
    // 文件读写
    FILE *fp = NULL;
    char buff[256];

    fp = fopen("D://c//cts//mini//bin//Debug//test.txt", "w+");
    fprintf(fp, "test fprintf\n");
    fputs("test fputs\n", fp);
    fclose(fp);

    fp = fopen("D://c//cts//mini//bin//Debug//test.txt", "rt+");
    // fscanf(fp, "%s", buff); 在读取一行数据时,如何遇到该行数据有空格,那么读到空格处就停止,不再继续向下读。
    //fscanf(fp, "%s", buff);
    // fscanf(fp, "%[^\n]%*c", buff); 遇到空格继续读取,读取完整的一行数据。
    /*
    格式控制说明:%[ ]表示读取指定字符集的文本,例如%[0-9]表示仅读取数字,遇到非数字字符就停止;%[a-zA-Z]表示读取字符,遇到非字母字符就停止)。
    第一个字符是'^',表示反向读取,读取指定字符集以外的文本,遇到指定字符集就停止。
    *表示忽略读取的字符,就是说读取指定的字符但不保存到变量中。
    %[^\n]表示读取'\n'之外的所有字符;之后的%*c表示忽略读取的'\n',就是说读取'\n'但不保存。
    %*[^\n]%*c表示跳过一行。
    */
    fscanf(fp, "%[^\n]%*c", buff);
    printf("1: %s\n", buff);

    fgets(buff, 256, (FILE*)fp);
    printf("2: %s\n", buff);

    fclose(fp);
}

 

发表回复

您的电子邮箱地址不会被公开。