- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试读取 txt 文档中的每一行并将每一行标记为特定数据。但是,我在循环结束时不断收到此错误“总线错误 10”。我不确定为什么会发生这种情况,因为缓冲区 char * 有足够的分配内存。
void* Producer(void *arg)
{
printf("\nEntered Producer\n");
int i, item, index;
index = (int)arg;
FILE *f = fopen(bookorders, "r");
char c = fgetc(f);
int z =0;
while (c!=EOF) {
char * buffer = (char *)calloc(1000, 1);
while (c!='\n') {
*(buffer+z) = c;
z++;
c = fgetc(f);
}
char * rpr;
char delim[2] = "|";
char * title = strtok_r(buffer, delim, &rpr);
title = title +1;
int leng = (int)strlen(title);
*(title+leng-1) = '\0';
double cost = atof(strtok_r(NULL, delim, &rpr));
int id = atoi(strtok_r(NULL, delim, &rpr));
char * cat_name = strtok_r(NULL, delim, &rpr);
c = fgetc(f);
printf("%c\n", c);
z = 0;
*buffer = '\0';
free(buffer);
}
fclose(f);
return NULL;
}
我省略了关于互斥体的代码,因为这个框架一开始就不起作用;我想只添加相关代码。另外这个错误与 while 循环的 EOF 条件有什么关系吗?
最佳答案
代码中有大量内容可能会超出缓冲区末尾或取消引用空指针(这可能会导致总线错误)。对我来说重写你的代码比列出所有错误要短,所以这里是:
char *buffer = malloc(1000);
if ( !buffer )
return NULL;
FILE *f = fopen(bookorders, "r");
int c, z;
if ( f ) for (;;)
{
for ( z = 0; z < 999 && (c = fgetc(f)) != EOF && c != '\n'; ++z )
buffer[z] = c;
if ( z == 0 && c == EOF )
break;
buffer[z] = 0;
char const delim[] = "|";
char *rpr;
char *title = strtok_r(buffer, delim, &rpr);
if ( title[0] )
{
++title;
title[strlen(title) - 1] = 0;
}
// Would be better to use `strtod` and `strtol` here
char *ptr = strtok_r(NULL, delim, &rpr);
double cost = ptr ? atof(ptr) : 0;
ptr = strtok_r(NULL, delim, &rpr);
int id = ptr ? atoi(ptr) : 0;
char * cat_name = strtok_r(NULL, delim, &rpr);
// If you want to do something with title, cost, id, cat_name, now's the chance
}
free(buffer);
fclose(f);
return NULL;
关于c - 不知道为什么我用 strtok/EOF 得到 "Bus error 10",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23001466/
所以我有这个要求,它接收一个文档,然后需要在输出中创建一个或多个文档。 在这个过程中,需要判断文档是否已经存在,因为申请创建和更新场景有不同的操作。 在直接代码中,这会很简单(概念上) InputDa
我想知道在 IBM Integration Bus 中存储数据库参数的最佳位置在哪里。例如,如果我们有开发、测试和生产环境,每个环境都有一个单独的数据库(当然),那么如何最好地组织数据库连接属性的更改
我正在从事一个项目,在该项目中,我必须与连接的任何设备(ttyS0、ttyS1 或 ttyUSB0)进行一些串行通信。幸运的是,我遇到了一个非常有用的 stackoverflow 链接:“Simple
企业服务总线(ESB)、.NET 服务总线(Windows Azure AppFabric 服务总线)、NServiceBus、RhinoServiceBus、MassTransit 等。 我试图了解
我现在使用Virtual Box启动VM,版本是5.1.26 r117224(Qt5.6.2),但是当我尝试启动VM时,我看到了下面的错误消息: 00:00:29.246866 VMMDev: Gue
从这个周末开始,我每小时都会从我的服务器收到一封邮件,其中包含以下消息: /etc/cron.hourly/mcelog.cron: mcelog: Cannot access bus thresho
Oracle 是否有两个 ESB 产品:Aqualogic Service Bus 和 Oracle Service Bus,或者 ALSB 是否合并到 Oracle SB 产品中? 最佳答案 目前,
为什么我的 RootManageSharedAccessKey 连接字符串无效? 代码: 执行下面的代码时,我收到有关无效连接字符串的错误: serviceBusClient <- new Servi
一 点睛 消息中间件提供了系统之间的异步处理机制,比如在电商网站上支付订单之后,会触发库存计算,物流调度计算,甚至是营销人员绩效计算,报表统计等,诸如此类的操作一般会耗费比订单购买商品本身更多的时间,
基本了解CANopen网络中PDO映射的概念。它允许广播带有小 header 的实时数据。 它是怎样炼成的?如何设置我的设备以了解如何发送/接收 PDO?我需要某种软件吗? 最佳答案 很多问题的答案取
我想知道我们如何计算某些标准 CAN id 集的软件接受过滤器掩码。如果有人可以用示例解释这一点,那就太好了。还请建议一些链接/ Material 来学习 CAN 堆栈软件实现。 提前致谢。 最佳
什么是消息总线 1. 概念 在微服务架构中,通常会使用轻量级的消息代理来构建一个共用的消息主题来连接各个微服务实例, 它广播的消息会被所有在注册中心的微服务实例监听和消费,也称消息总线 2.
一 点睛 有这样一个场景,就是监控某个硬件设备的运行时数据,然后记录到数据库。 可以这样做:该硬件设备在运行的过程中,将一些性能信息等写入特殊的数据文件中,需要做的就是监控文件的变化,读取最后一行数据
I will use CANOpen in linux. In kernel, linux has socketcan and i have some questions for further im
我想用 corss_compiler D-bus 来武装。 工具链:arm-linux-gcc-3.4.1 配置选项:CC=arm-linux-gcc ./configure --prefix=/op
当您将多个连接连接到节点上的单个输出终端时会发生什么。 我找不到关于此的任何 IBM 文档,但工具包并没有阻止我这样做。 这只是一个例子,但我想知道当您对任何节点执行此操作时的一般行为,而不仅仅是输入
如何创建多个虚拟套接字并将它们链接在一起以创建虚拟总线? 我想模拟一个应用程序,其中许多节点通过 CAN 相互通信。 最佳答案 您所需要的只是 can-utils 中的 cangw 工具。 。创建两个
我正在使用Azure Service Bus SubscriptionClient.OnMessage方法;配置为最多同时处理5条消息。 在代码内,我需要等待所有消息完成处理后才能继续(正确关闭Azu
如何使用 C 列出 D-Bus sessionBus 中的所有名称? 我正在寻找C GIO相当于 dbus.list_names python method 我想列出“org.mpris.MediaP
这个问题已经有答案了: Why does modifying a string literal cause a segmentation fault? [duplicate] (1 个回答) 已关闭
我是一名优秀的程序员,十分优秀!