鉴于以下情况,我遇到了分段错误,我不确定是否因为我正在测试指针或其他问题。
测试第4个字符是逗号的正确方法是什么?
从fifoabc,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
我也试过直接使用传递的字符串,但也有段错误
if (strcmp(inputread[3], ",") == 0){ //causes seg fault
答案 0 :(得分:1)
要将缓冲区传递给函数,请不要使用&
代替:
doParseInput(in);
比较缓冲区的第4个字符(索引== 3):
if (theParsedString[3] == ','){
(注意单引号,意思是Character-Value
,而不是双引号,这意味着"String"
)
答案 1 :(得分:0)
首先,您将错误类型的参数传递给doParseInput
。它需要char *
,但您传递char (*)[]
。你的编译器应该警告过你。
另一个问题是你使用字符串比较来检查单个字符。您需要使用字符常量(即使用单引号而不是双引号)并将其直接与数组成员进行比较。
if (theParsedString[3] == ',') {