Tag: fread

当长度> 2G时,Fread on Lion不会读取

由于Macosx Lion fread不读取长度> 2G(int size,2’147’483’648 bytes)的文件。 它与macosx雪豹一起工作多年。 我写了一个程序来测试它: #include #include #include int main(int argc, char *argv[]) { FILE *fin = NULL, *fout = NULL; char *ptr = NULL; size_t len; fpos_t flen; if (!(fin = fopen(argv[1], “rb”))) { printf(“The input file: %s could not be opened\n”, argv[1]); return -1; } if ((fout = fopen(argv[2], “rb”))) […]

我将文本读入缓冲区后如何逐行读取?

首先,我通过调用fread将文本读入缓冲区,然后我想逐行读取它,怎么做? 我尝试使用sscanf,但它似乎不起作用。 char textbuf[4096]; char line[256]; FILE *fp; fp = fopen(argv[1],”r”); memset(textbuf, 0, 4096); fread(textbuf, 1, 4096, fp); 我知道使用fgets是一个好方法。 我只是想知道天气这个方法可以做同样的事情。

检查返回值fread和fwrite

#include #include int main(int argc, char *argv[]){ if(argc != 3){ printf(“Usage: ./copy filename newfile\n”); exit(1); } int bytes; long file_size, file_copied_size; FILE *file_to_copy, *new_file; if((file_to_copy = fopen(argv[1], “rb”)) == NULL){ printf(“File cannot be opened – read\n”); exit(1); } if((new_file = fopen(argv[2], “wb”)) == NULL){ printf(“File cannot be opened – write\n”); exit(1); } fseek(file_to_copy, 0, SEEK_END); […]

fread是否因大文件而失败?

我必须分析一个16 GB的文件。 我正在使用fread()和fseek()顺序读取文件。 这可行吗? fread()为这么大的文件工作吗?

如何使用fread和fwrite函数来读写二进制文件?

嗨,在我的项目中,我要读取一个.bin文件,其中包含short(16 bit values)forms的传感器数据。 我正在使用fread函数进入缓冲区,但我觉得读入没有正确发生。 我的意思是我写的东西和我读的东西之间没有一致性。你们能否说出这里出了什么问题? 这不是我项目中的代码……我只是想在这里validationfread和fwrite函数。 #include void main() { FILE *fp = NULL; short x[10] = {1,2,3,4,5,6,5000,6,-10,11}; short result[10]; fp=fopen(“c:\\temp.bin”, “wb”); if(fp != NULL) { fwrite(x, 2 /*sizeof(short)*/, 10 /*20/2*/, fp); rewind(fp); fread(result, 2 /*sizeof(short)*/, 10 /*20/2*/, fp); } else exit(0); printf(“\nResult”); printf(“\n%d”,result[0]); printf(“\n%d”,result[1]); printf(“\n%d”,result[2]); printf(“\n%d”,result[3]); printf(“\n%d”,result[4]); printf(“\n%d”,result[5]); printf(“\n%d”,result[6]); printf(“\n%d”,result[7]); printf(“\n%d”,result[8]); printf(“\n%d”,result[9]); fclose(fp) } […]

这个程序中的恐惧错误了吗?

我是C的中级学生。我正在尝试制作银行管理程序,但首先我需要制作一个登录程序,所以我创建了以下其中一项。 我最近在C中了解了文件I / O,并且对fread和fwrite知之甚少。 我有一个文件(data.txt)格式如下,如下。 user1 1124 user2 3215 user3 5431 在下面的程序中,我要求用户输入用户名和密码(4位密码)并将文件数据复制到结构中,然后将这两者进行比较以validation信息。 我的程序有什么问题以及如何使fread正常工作。 是在data.txt文件中格式化还是我应该更改它。 提前致谢… #include #include #include struct user_account { char u_name[30]; int u_pin; } log_in; int login() { int start; int i, n; int t_pin[4]; // TEMPORARY INT PIN for storing pin inputed by user char t_name[30]; // TEMPORARY STRING for storing name […]

第一次调用fread后出现ftell错误

所以我有一个非常简单的程序,它读取文件的3个第一个字节: int main(void){FILE * fd = NULL; int i; unsigned char test = 0; fd = fopen(“test.bmp”,“r”); printf(“position:%ld \ n”,ftell(fd)); for(i = 0; i <3; i ++){fread(&test,sizeof(unsigned char),1,fd); printf(“position:%ld char:%X \ n”,ftell(fd),test); } return(0); } 当我用文本文件尝试它时它工作正常: 位置:0 位置:1个字符:61 位置:2个字符:62 位置:3个字符:63 但是当我用PNG运行时,我得到: 位置:0 职位:147字符:89 位置:148字符:50 位置:149字符:4E 请注意,文件的3个第一个字节确实是89 50 4E,但我不知道147来自哪里。 使用bmp文件,我得到: 位置:0 位置:-1字符:42 位置:0字符:4D 位置:1个字符:76 你知道这些第一个职位来自哪里吗? 非常感谢你的帮助

fread’ing和fwrite’ing包含指针的结构

gcc (GCC) 4.7.0 c89 你好, 我有以下结构,我试图fwrite和fread。 但是,因为我的设备和资源是指针。 fwrite将读取指针值而不是数据。 我不能将数组用于设备或资源。 只有指针,因为它们必须动态分配。 在写之前,我为结构元素分配了所有内存。 这里没有显示,因为我想保持片段简短。 也不是自由的。 在我的fread函数中,我为设备和资源分配内存,以便fread将读入这些内存位置。 但是,这不起作用。 做这个的最好方式是什么? 非常感谢任何建议, struct data { int id; int set; char *device; char *resource; }; struct database { struct data **db_data; size_t database_rows; size_t database_data_size; }; int database_write(FILE *fp, const struct database *db) { rewind(fp); if(fwrite(*db->db_data, sizeof(struct data), 1, fp) == […]

为什么ftell()在fread()之后显示错误的位置?

尝试使用c fread()调用从简单的文本文件中读取时,我遇到了一个非常奇怪的错误。 我制作了一个非常简单的程序来显示错误: int main(int argc ,char ** argv) { FILE* fh = fopen(“adult.txt”,”r”); if(fh==NULL){ printf(“error opening file\n”); exit(0); } int s = 1000; printf(“cur before=%d\n”,ftell(fh)); char* b = malloc (sizeof(char)*s); int k =fread(b,sizeof(char),s,fh); printf(“cur after reading %d bytes =%d\n”,k,ftell(fh)); return EXIT_SUCCESS; } 我得到的是输出: cur before=0 cur after reading 1000 bytes =1007 这是正常的吗? fread返回数字’1000’,但光标(用ftell())显示1007,任何帮助将不胜感激。

在C中,fread drop carriage返回?

我希望能够读取Windows文本文件,在内存中修改它,然后用修改后的数据覆盖旧文件。 但是,fread似乎并不存储我的Windows文本文件中存在的回车符,这会在我写旧数据时丢失。 我找不到任何似乎有这个问题的人。 以下是一些演示此问题的示例代码: #include #include int main() { FILE* textFile; long fileSize; char fileCharacterBuffer[100]; int i; for(i = 0; i < 100; i++) { fileCharacterBuffer[i] = '\0'; } textFile = fopen("./Test.txt", "r+"); fseek(textFile, 0L, SEEK_END); fileSize = ftell(textFile); fseek(textFile, 0L, SEEK_SET); fread(fileCharacterBuffer, 1, fileSize, textFile); } 测试文件: 3 112 REd 110 green #5/09/2014 5087 […]