我想一次完成文件的所有内容,并将其放入"大字符串"中。。我不想一行一行地写。有什么功能可以做到这一点吗?
我想要这样的东西:
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);
}
这可能吗?
您也可以考虑使用
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] = ' ';
}
带有一些额外的错误检查
是。阅读ftell
或stat
来获取文件的大小,以了解您需要分配多少空间(您不能在FILE *
上使用sizeof
来获取这些信息,它不会按照您的想法进行操作),然后一次性阅读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;
}