首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从文件读取

从文件读取
EN

Stack Overflow用户
提问于 2013-12-14 16:42:37
回答 4查看 119关注 0票数 0

昨天在我的班上,我们第一次开始处理文件。我想看看它是如何工作的,所以我写了一个程序,我写了一个单词,这个单词必须写在某个特定的文件中(这部分是有效的)。在那之后,我想从该文件中读取一些字符,并将其显示在屏幕上。

代码语言:javascript
复制
#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,这意味着我在读取文件时做了一些错误的事情。

EN

回答 4

Stack Overflow用户

发布于 2013-12-14 16:55:05

首先,我会不惜一切代价避免使用gets()。它是不安全的,并且被认为已被弃用。它可能会在将来被删除。相反,可以考虑使用fgets(),如下所示:

代码语言:javascript
复制
fgets(c, sizeof(c), stdin);

接下来,你的open是可疑的:

代码语言:javascript
复制
df=open("e:\\codeblocks\\fisperimente\\text2.txt",O_RDONLY|O_WRONLY);

只读和只写是互斥的。如果你想打开一个同时具有读写功能的文件,你需要O_RDWR

最后,在写入文件后,文件指针指向文件的末尾。如果你想重读它,你需要回到开头。这将做到这一点:

代码语言:javascript
复制
lseek(df, 0, SEEK_SET);

一旦你这样做了,你就可以读回你的文件了。

票数 3
EN

Stack Overflow用户

发布于 2013-12-14 16:48:36

您需要查找到文件的开头,才能读回其内容。或者,您可以直接关闭它或再次打开它进行阅读。

票数 1
EN

Stack Overflow用户

发布于 2013-12-14 16:53:29

尝试使用标志O_RDWR,只读和只写标志的或结果并不是您认为的那样;)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20581276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档