【问题标题】:Reading particular char from file in C [closed]从C中的文件中读取特定字符[关闭]
【发布时间】:2014-01-22 19:08:45
【问题描述】:

我是 C 编程新手,我需要编写一些从文件中获取字符的程序。我有这样的文本文件:

Grade
Joe Black A
Mark Freeman B
John White C
.
.
.

我只需要从这个文件中读取成绩(A B C ...)并将其放入数组中。有可能只得到这个特定的字符而不是整个文件吗?

【问题讨论】:

  • 不可能只读取文件中的成绩,因为不查找换行符就无法知道它们在文件中的位置。当然,可以只将您关心的信息存储在您的阵列中,但您需要展示您尝试过的内容; Stack Overflow 不是“为我做作业”服务(有人可能会为你做作业,并在 3...2...1...内证明我错了)
  • 您可以读取文件的每一行并取最后一个字符。如果您在这方面需要帮助,请尝试编写代码,看看您遇到了什么问题。

标签: c file scanf


【解决方案1】:

是的。您可能会发现读取 (fgets) 中的行然后解析字符串(从末尾修剪空格然后在最后一个空格之后读取字符)最容易。

【讨论】:

  • 通过fgets() 读取的字符串中的“最后一个空格”通常是'\n',之后的char 是`''\0``。不清楚你的建议。
  • 感谢您的建议 - 答案已更新。
【解决方案2】:
  1. fopen()打开文件。
  2. 为使用malloc() 读取的每一行分配内存。
  3. 在您尚未到达文件末尾 (feof()) 时,使用 fgets() 读取文件中的每一行。

但是你怎么知道哪个角色是等级呢?如果您查找字符 'A' - 'F' (strchr()),您还会在 Joe Black 和 Mark Freeman 的姓氏中找到 'B''F'

您可能会发现strtok() 可以帮助您在每个空格上将字符串拆分为更小的部分,并且假设您文件中的数据没问题,那么每行上的最后一个标记(如果它只有 1 个字符长)将是年级。

(给新成员的提示:如果有人发布了您认为最好的答案,您可以“接受”他们的回答以表示感谢。您的声誉会感谢您。)

【讨论】:

    【解决方案3】:
    #include<stdio.h>
    #include<string.h>
    int main(void)
    {
        FILE *fp;
        char arr[100];
        int flag=1;
        fp=fopen("try.txt","r");
        while (fgets(arr,100, fp)!=NULL)
        {
            if(flag==1)
            {
                flag=0;
                continue;
            }
            printf("%c\n",arr[strlen(arr)-2]);
        }
    }
    

    确保在文件最后一行的最后一个字符后按 Enter,因为我们正在执行 len-2(其中包括 \n 字符)。

    【讨论】:

    • 谢谢伙计,我明白这一行 "printf("%c\n",arr[strlen(arr)-2]);"但是关于这面旗帜呢?是跳过第一行吗?
    • @Patryk:是的标志是为了跳过第一行。
    猜你喜欢
    • 1970-01-01
    • 2014-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多