Учитывая следующее, я получаю ошибку сегментации, и я не уверен, что это потому, что я тестирую указатель или другое вопрос.в C правильный способ проверить n-й символ == «x» в строке, переданной функции
Каков правильный способ проверить, является ли 4-й символ запятой?
строка считывается из ФИФО 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
Я также попытался использовать переданную строку непосредственно, но и сегментного вино
if (strcmp(inputread[3], ",") == 0){ //causes seg fault
'if (inputread [3] == ',') {' как вы сравниваете * char *. 'strcmp()' предназначен для сравнения * строк * (последовательность символов, заканчивающихся нулевым байтом). –
См. Этот раздел [вопрос] (https://stackoverflow.com/questions/10490636/compare-between-a-char-in-a-string-to-a-given-char). На самом деле это не дубликат, так как вы запрашиваете решение C, но принятый ответ также есть. – qwattash
Возможный дубликат [Сравнить между символом в строке с заданным символом] (http://stackoverflow.com/questions/10490636/compare-to-a-given-char) – qwattash