Tag: 文件

在C中没有fclose的fopen

如果我使用fopen打开一个文件很多次而不调用fclose发生什么? 可能出现任何缓冲区溢出问题?

C从文件中读取以空格分隔的值

我需要从文件中读取文本,并根据读取的信息为结构赋值。 这是文本文件的格式: First Middle Last Address city state zip age sex tenure salary \————————————————————– ADA A AGUSTA 33 BABBAGE ROAD LOVELACE GB 19569 28 F 2 350.50 ISSAC A ASIMOV 99 FICTION WAY AMHERST MA 63948 58 M 6 423.88 HUMPHRY R BOGART 71 SAM STREET HOLLYWOOD CA 48482 56 M 5 366.00 结构我必须把它读成: typedef […]

为什么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语言或Vala语言中读取和写入二进制文件中的浮点数? 用于写入和读取的通用API通常设计为以字节格式写入。 我的意思是你必须将一个字节数据的数组写入文件并以相同的格式读取。 我正在寻找一种以浮动格式编写和读取的方法。 没有类型转换,无需将数字更改为字符串。 可能吗?

fwrite是否在内部调用任何锁?

在solaris中,当我将dbx连接到其中一个正在运行的堆栈时,我发现调用fwrite导致__lll_lock_wait()? 在什么情况下会发生这种情况? fwrite内部是否尝试获取锁定?

使用fwrite()将结构写入文件

我有以下程序: #include #include #include #define MAXLEN 100 typedef struct {int key; char data[MAXLEN];} record; main(int argc, char *argv[]) { int n, i; record x; FILE *fp; fp = fopen(argv[1], “w+”); printf(“How many records will be entered? \n”); scanf(“%d”, &n); for (i=0; i<n; i++) { printf("Enter record: \n"); scanf("%d", &x.key); scanf("%s", &x.data); fwrite(&x, sizeof(record), 1, fp); […]

C二进制文件与文本文件效率

我是C的新人,我想要一些帮助。 假设我需要在文件中存储仅6位数字。 (假设int的大小等于4)使用文本文件或二进制文件会更有效(就内存而言)? 我不确定如何面对这个问题,欢迎任何帮助

如何从另一个C文件中访问变量?

我有两个C文件。 我想在一个中声明一个变量,然后能够从另一个C文件访问它。 我对示例字符串的定义可能并不完美,但您明白了。 //file1.c char *hello=”hello”; //file2.c printf(“%s”,hello);

我可以使用标准库在C中寻找超过2GB的位置吗?

我正在制作一个用C语言读取磁盘映像的程序。我正在尝试制作可移植的东西,所以我不想使用太多特定于操作系统的库。 我知道有很多磁盘映像是非常大的文件,但我不确定如何支持这些文件。 我已经阅读了fseek ,它似乎使用了一个long int ,它不能保证支持超过2 31 -1的值。 fsetpos似乎使用fpos_t支持更大的值,但无法指定绝对位置。 我也有关于使用fseek几个相对寻求,但我不确定这是否便携。 如何在C中支持可移植地支持大文件?

有没有办法在Windows中使文件描述符不阻塞?

我想将我的代码从linux移植到Windows。 它是这样的: void SetNonBlocking( int filehandle ) { int fhFlags; fhFlags = fcntl(filehandle,F_GETFL); if (fhFlags < 0) { perror("fcntl(F_GETFL)"); exit(1); } fhFlags |= O_NONBLOCK; if (fcntl(filehandle,F_SETFL,fhFlags) < 0) { perror("fcntl(F_SETFL)"); exit(1); } return; } 现在我希望在Windows中有相同的function。 有任何想法吗? Actualy我的文件句柄是管道的读取端,通过WinApi CreatePipe方法创建。