将内容归档为大字符串

时间:2014-04-24 23:33:20

标签: c string file copy

我想将文件的所有内容一次性,并将其放在"大字符串" 中。 我不想一行一行。有什么功能吗?

我想要这样的事情:

int main(int argc, char *argv[]) {
    FILE *script;
        int i;
        char *code;

        if (argc > 1){
          for (i = 1; i < argc; i++){
            if ((script = fopen(argv[i], "r")) == NULL){
            perror(argv[i]);
            }else {
               code = malloc (sizeof(char)*sizeof(script));

               **HERE TAKE THE CONTENT AND PUT IN "CODE" IN ONE GO** 


             }
           }
         }
     printf("%s",code);
     fclose(script);
     free(codigo);
     exit(0);
}

那可能吗?

2 个答案:

答案 0 :(得分:1)

是。阅读ftellstat,了解如何获取文件大小以了解需要分配多少空间(不能在sizeof上使用FILE *获取该信息,它不会按照您的想法执行),并fread一次性阅读。

使用stat()获取大小的示例代码:

#include <sys/stat.h>

off_t fsize(const char *fname) {
    struct stat st;

    if (stat(fname, &st) == 0)
        return st.st_size;

    return -1; 
}

答案 1 :(得分:1)

你也可以考虑使用

fseek(script, 0, SEEK_END); // position to the end of the file

size = ftell(script); // get the file size

fseek(script, 0, SEEK_SET); // rewind to the beginning of the file

code = malloc(sizeof(char)*(size+1));

if(code) { 
    fread(code, sizeof(char), size, script);
    code[size] = '\0';
}

进行一些额外的错误检查