C语言如何实现把文件内容拷贝到字符串中?

我现在需要把文件内容拷贝到一个字符串中,请问如何在C代码中实现这个功能?


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <stdint.h>

//校验和计算
uint8_t msg_xor_check(uint8_t* s, uint32_t len) {
    uint8_t temp = s[0];
    uint32_t i = 0;
    for (i = 1; i < len; i++) {
        temp ^= s[i];
    }
    return temp;
}

//unsigned char XorCheckSumInString__(char *s, uint32_t start, uint32_t length) {
//    uint32_t i;
//    //res是最终的异或结果计算返回值
//    unsigned char b, res;
//    res = 0;
//    for (i = 0; i < length; i++) {
//        //s是字符串接受缓冲器的首地址
//        b  = (unsigned char)s[i + start];
//        //start是需要处理的字符串首地址偏移量
//        res ^= b;
//    }
//    return res;
//}

//计算文件大小
int file_size(char* filename) {
    //获取文件名为filename的文件大小。
    FILE *fp = fopen(filename, "rb");//打开文件。
    int size;
    if (fp == NULL)         // 打开文件失败
        return -1;
    fseek(fp, 0, SEEK_END);    //定位文件指针到文件尾。
    size = ftell(fp);         //获取文件指针偏移量,即文件大小。
    fclose(fp);                //关闭文件。
    return size;
}

int main(int argc, char *argv[]) {
    char *SfileName = "E:\\ApplicationData.s19";
    int SfileSize = file_size(SfileName);
    printf("Sfile size is : 0X%08x\n", SfileSize);

    char *buf;
    char *ident;
    unsigned int i, file_size, need_comma;
    FILE *file_input, *file_output;
    if (argc < 4) {
        fprintf(stderr, "Usage: %s binary_file output_file array_name\n", argv[0]);
        return -1;
    }
    file_input = fopen(argv[1], "rb");
    if (file_input == NULL) {
        fprintf(stderr, "%s: cant open %s for reading!\n", argv[0], argv[1]);
        return -1;
    }
    //得到file长度
    fseek(file_input, 0, SEEK_END);
    file_size = ftell(file_input);
    fseek(file_input, 0, SEEK_SET);
    buf = (char *)malloc(file_size);
    assert(buf);
    fread(buf, file_size, 1, file_input);
    fclose(file_input);

    file_output = fopen(argv[2], "w");
    if (file_output == NULL) {
        fprintf(stderr, "%s: can't open %s for writing\n", argv[0], argv[2]);
        return -1;
    }
    ident = argv[3];
    need_comma = 0;
    fprintf(file_output, "const char %s[%i] = {", ident, file_size);
    for (i = 0; i < file_size; i++) {
        if (need_comma)
            fprintf(file_output, ", ");
        else
            need_comma = 1;
        if ((i % 11) == 0)
            fprintf(file_output, "\n\t");
        fprintf(file_output, "0x%.2x", buf[i] & 0xff);
    }
    fprintf(file_output, "\n};\n\n");
    fprintf(file_output, "const int %s_length = %i;\n", ident, file_size);
    fclose(file_output);
    return 0;
}

FILE* fp;

char string[1024];

//第一步,先打开文件

fp = fopen("aa.txt","r");

//第二步,用fscanf将文件内容赋给字符串,如果是多行的话则应该用fgets逐行读取

fscanf(fp, "%s", string);

或

while (fgets(string, 1024, fp) != NULL)

{......

}

或while (!feof(fp))

{

fgets(string, 1024, fp);

}
你可以参考下这篇文章:【C语言】——文件内容排序