【发布时间】:2017-01-18 14:36:03
【问题描述】:
鉴于以下情况,我遇到了分段错误,我不确定是不是因为我正在针对指针或其他问题进行测试。
测试第 4 个字符是否为逗号的正确方法是什么?
从fifo abc,def,xyz读取字符串
char in[BUFFER] = {'\0'};
if ((in_fl = open(*fifofile, O_RDONLY)) == -1)
{
while (read(in_fl, in, BUFFER)>0) {
doParseInput(&in);
}
void *doParseInput(char *inputread){
//copy string to use later....
char* theParsedString = calloc(strlen(inputread)+1, sizeof(char));
strcpy(theParsedString , inputread);
if (strcmp(theParsedString[3], ",") == 0){ //causes seg fault
我也试过直接用传过来的字符串,也是seg fault
if (strcmp(inputread[3], ",") == 0){ //causes seg fault
【问题讨论】:
-
if (inputread[3] == ',') {是您比较 char 的方式。strcmp()用于比较字符串(以空字节结尾的字符序列)。 -
查看相关question。不是真正的重复,因为您要求的是 C 解决方案,但接受的答案也是 C。
-
确保您对
in(您的缓冲区)进行了足够的阅读:如果您只阅读了 3 个字符,则无法测试第 4 个字符。然后,使用不带 & 符号的doParseInput(in)。然后,比较像inputread[3] == ','。 -
什么样的蹩脚编译器让这段代码编译?