C 中的 ascii 文件处理

2023-12-29

我很难理解你如何在 c 中处理 ascii 文件。我可以毫无问题地打开文件并关闭它们或读取每行具有一个值的文件。但是,当数据用字符分隔时,我真的不明白代码在较低级别上做了什么。

示例:我有一个包含用逗号分隔的名称的文件,如下所示:"MARY","PATRICIA","LINDA","BARBARA","ELIZABETH","JENNIFER"

我创建了一个数组来存储它们:char names[6000][20];现在,我处理它的代码是 while (fscanf(data, "\"%s\",", names[index]) != EOF) { index++; }代码执行第一次迭代,names[0] 包含整个文件。

我怎样才能分开所有的名字?

这是完整的代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
    char names[6000][20]; // an array to store 6k names of max length 19
    FILE * data = fopen("./022names.txt", "r");
    int index = 0;
    int nbNames;

    while (fscanf(data, "\"%s\",", names[index]) != EOF) {
        index++;
    }

    nbNames = index;

    fclose(data);

    printf("%d\n", index);
    for (index=0; index<nbNames; index++) {
        printf("%s \n", names[index]);
    }
    printf("\n");

    return 0;
}

PS:我想这也可能是因为我的数组的数据结构。


如果您想要一个简单的解决方案,您可以使用逐字符读取文件fgetc。由于文件中没有换行符,因此只需忽略引号并在找到逗号时移至下一个索引。

char names[6000][20]; // an array to store 6k names of max length 19
FILE * data = fopen("./022names.txt", "r");
int name_count = 0, current_name_ind = 0;
int c;

while ((c = fgetc(data)) != EOF) {
    if (c == ',') {
        names[name_count][current_name_ind] = '\0';
        current_name_ind = 0;
        ++name_count;
    } else if (c != '"') {
        names[name_count][current_name_ind] = c;
        ++current_name_ind;
    }
}
names[name_count][current_name_ind] = '\0';

fclose(data);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C 中的 ascii 文件处理 的相关文章

随机推荐

  • Symfony2主义mysql IN查询

    我有一系列产品 ID 我必须像这样进行查询 SELECT FROM products WHERE pid IN 1 2 8 4 etc 我的 id 位于变量 pids 中 qb em gt createQueryBuilder query
  • 如何使用 Amazon AWS Elastic Beanstalk 安装 PHP 扩展?

    我们在 EC2 实例上的 PHP 应用程序中使用 aws elastic beanstalk 由于我们选择了负载平衡 它会不断地更改实例 我想知道如果我们安装 PHP 插件 它会受到实例更改的影响还是在新实例中也可用 提出这个问题是因为我们
  • macOS 上 CLion 中的 std::unordered_map

    我怎样才能看到元素std unordered map在 CLion 调试器中 有一些recipe https blog jetbrains com clion 2015 05 debug clion 怎么看std map元素 但它不适用于s
  • 添加两个 NSDate

    我有两个 NSDate 日期和时间 我想以这样的方式添加它们 以便我从日期中获取日期 从时间中获取时间 关于我如何做到这一点有什么建议吗 Cheers Nik 如果我没听错的话NSDates dateByAddingTimeInterval
  • 在 Symfony 1.4 中重命名“web”文件夹

    我想在 symfony 1 4 中将 web 文件夹重命名为 html 不幸的是 搜索这方面的文档却一无所获 除了在 1 0 中如何实现这一点之外 这似乎不起作用 首先 您不必重命名它 您可以只创建一个符号链接 除非您运行的是 Window
  • 使用 MySQL 和 ejabberd 进行高效的外部排班

    Question 请注意 这个问题的解决方案就在下面 使用 Eugen 的视图思想 我正在为 PHP MySQL 用户驱动的网站编写一个聊天模块 允许两个用户交朋友 并选择 eJabberd 作为聊天系统 我已经使用 PHP 守护程序成功设
  • 透明外壳。如何将很长的 JavaScript 拆分为多行?

    我有一个 JS 压缩文件 长约 14k 并且在一行中 这会在 Clear Case 上造成一些问题 导致无法办理登机手续 有没有办法修复clearcase 如果我想将JS文件拆分为多行 插入换行符时需要注意什么吗 显然我不会分割字符串或数字
  • schema.org 中的产品类别?

    用作参考 https support google com webmasters answer 146750 hl en https support google com webmasters answer 146750 hl en 您会注
  • 如何加密/解密 XML 文件?

    我正在尝试加密 解密 XML 文件 我找到了这个加密示例 但我不知道如何解密 任何想法 谢谢 Load this XML file System Xml XmlDocument myDoc new System Xml XmlDocumen
  • ArCore Sceneform:检测图像时播放.mp4视频

    当我找到图像时 我想在其上方放置文本和视频 文本视图放置在场景上 但视频没有放置在场景中 它只是添加到中间的主布局中 我正在使用组件 VideoView 我不确定这是问题所在 override fun onCreate savedInsta
  • 如何使用PHP给上传的图片添加水印

    如何使用 PHP 对上传的图片添加水印 示例链接 http www kitebeaches com kitesurf uploadPicture NIRVANA Club Village html http www kitebeaches
  • TEmbeddedWB/TWebbrowser:window.external是一个空对象,但可以调用函数,为什么它首先是“空”?

    使用案例 先一些信息 我制作了一些 HTML CSS3 Javascript 游戏 可以在特定于平台的可执行文件中的 WebView 嵌入式浏览器中的不同平台上运行 我自己设计了它 因为我厌倦了周围所有的 框架 这些 框架 告诉我使用他们的
  • XMPPFramework - 实施群聊 (MUC)

    我正在开发 iOS 聊天客户端 有人可以帮我进行多用户聊天吗 我已经实现了 Robbiehanson 的 XMPPFramework 谁能告诉我如何使用此框架获取组列表并在服务器中创建组 提前致谢 获取房间列表 NSString serve
  • 无法在已禁用的应用程序上获得对 public_profile 的高级访问权限?

    昨晚 Facebook 禁用了我们的应用程序 理由如下 开发者政策 6 1 验证您是否已正确集成登录 您的应用程序在测试过程中不应崩溃或挂起 在登录期间 您的应用程序崩溃或过度挂起 为尝试使用您的应用程序的人带来了糟糕的体验 为了确保此流程
  • 无法初始化 Eureka servlet 上下文

    我正在将我的实际项目升级到 spring boot 2 5 2 我有一个配置服务器 一个 zuul 网关和一个发现服务器 现在我看到 Spring Cloud 在我的发现服务器中有一个嵌入式网关 我想使用它 所以我最后只有配置服务器和发现服
  • 取消普通 ECMAScript 6 Promise 链

    有没有办法清除 thenJavaScript 的 sPromise实例 我在上面编写了一个 JavaScript 测试框架QUnit https qunitjs com 该框架通过在一个框架中运行每个测试来同步运行测试Promise 抱歉这
  • spring-boot 驼峰式嵌套属性作为环境变量

    我有一个 Spring Boot 应用程序 并希望在一个带有注释的类中设置环境变量 ConfigurationProperties第二级嵌套属性是驼峰式大小写 这是该类的一个示例 SpringBootApplication EnableCo
  • 如何控制 .Net Forms.TreeView 中的复选框?

    我有一个 Net 桌面应用程序 其中 TreeView 作为 UI 元素之一 我希望能够多重选择该 TreeView 但根本不支持这一点 所以我在树中添加了复选框 我的问题是只有一些项目是可选的 而那些不能选择的项目则不能一致地级联选择 有
  • TypeScript 错误:类型中缺少属性“0”

    我的界面是这样的 export interface Details Name First string Last string 我有一个可观察的配置变量 Configuration KnockoutObservable
  • C 中的 ascii 文件处理

    我很难理解你如何在 c 中处理 ascii 文件 我可以毫无问题地打开文件并关闭它们或读取每行具有一个值的文件 但是 当数据用字符分隔时 我真的不明白代码在较低级别上做了什么 示例 我有一个包含用逗号分隔的名称的文件 如下所示 MARY P