昨天在我的班上,我们第一次开始处理文件。我想看看它是如何工作的,所以我写了一个程序,我写了一个单词,这个单词必须写在某个特定的文件中(这部分是有效的)。在那之后,我想从该文件中读取一些字符,并将其显示在屏幕上。
#include <stdio.h>
#include <stdlib.h>
#include <io.h>
#include <sys/stat.h>
#include <process.h>
#include <fcntl.h>
#include <string.h>
int main()
{
int df,m;
char c[50],d[50];
printf("c= \n");
gets(c);
m=strlen(c);
df=open("e:\\codeblocks\\fisperimente\\text2.txt",O_RDONLY|O_WRONLY);
if (df==-1) {printf("error");exit(1);}
write(df,c,m);
/*int i,n;
n=read(df,d,5);
for (i=1;i<=n;i++)
{
printf("%c",d[i]);
} */
close(df);
return 0;
}我在我的评论中放的是不起作用的部分。我注意到如果我printf n,它返回-1,这意味着我在读取文件时做了一些错误的事情。
发布于 2013-12-14 16:55:05
首先,我会不惜一切代价避免使用gets()。它是不安全的,并且被认为已被弃用。它可能会在将来被删除。相反,可以考虑使用fgets(),如下所示:
fgets(c, sizeof(c), stdin);接下来,你的open是可疑的:
df=open("e:\\codeblocks\\fisperimente\\text2.txt",O_RDONLY|O_WRONLY);只读和只写是互斥的。如果你想打开一个同时具有读写功能的文件,你需要O_RDWR。
最后,在写入文件后,文件指针指向文件的末尾。如果你想重读它,你需要回到开头。这将做到这一点:
lseek(df, 0, SEEK_SET);一旦你这样做了,你就可以读回你的文件了。
发布于 2013-12-14 16:48:36
您需要查找到文件的开头,才能读回其内容。或者,您可以直接关闭它或再次打开它进行阅读。
发布于 2013-12-14 16:53:29
尝试使用标志O_RDWR,只读和只写标志的或结果并不是您认为的那样;)
https://stackoverflow.com/questions/20581276
复制相似问题