Я пытаюсь разобрать строку файла CSV и вытащить желаемое значение, которое я хочу.Тем не менее, моя функция обрезает последний символ в строке, и я не могу понять, почему.Я думал, что это как-то связано с тем, где я назначаю нулевой терминатор, но это не помогло.Любая помощь будет оценена.Спасибо!
char* findKey(char lineBuffer[], int columnNumber ){
char tempArray[strlen(lineBuffer)+2];
int commasCounted = 0;
int i =0;
for(i = 0; i < strlen(lineBuffer) - 1; i++){
if (commasCounted == columnNumber){
commasCounted = i;
break;
}
if (lineBuffer[i] == '\"'){
i++;
while(lineBuffer[i] && lineBuffer[i] != '\"'){
i++;
}
}
if (lineBuffer[i] == ','){
commasCounted++;
}
}
if(lineBuffer[commasCounted] == ','){
tempArray[0] = '0';
tempArray[1] = '0';
tempArray[2] = '0';
tempArray[3] = '0';
tempArray[4] = '\0';
}else{
int j = 0;
for(i = commasCounted; i < strlen(lineBuffer) - 1; i++){
if(lineBuffer[i] == '\"'){
i++;
while(lineBuffer[i] && lineBuffer[i] != '\"'){
tempArray[j] = lineBuffer[i];
i++;
j++;
}
break;
}else if(lineBuffer[i] == ','){
break;
}else
tempArray[j] = lineBuffer[i];
j++;
}
tempArray[j] = '\0';
}
char* tempString = strtok(tempArray, "\n");
//printf("tempString before returning in findKey: %s\n", tempString); //testing
return tempString;
}
В CSV-файле могут быть определенные столбцы, заключенные в кавычки, поэтому в них есть некоторые проверки для кавычек.Передается строка для проверки и столбец, содержащий информацию.Так, например: Передав это для lineBuffer:
30,beforeyoustartedgackinyouusedtohaveabrainbutnowyoudontgeteventhesimpliesofthingsdrawalittlepictureevenusemyhandstrytoexplainbutyoujustdontunderstandoh
И 1 для columnNumber
В результате возвращается:
beforeyoustartedgackinyouusedtohaveabrainbutnowyoudontgeteventhesimpliesofthingsdrawalittlepictureevenusemyhandstrytoexplainbutyoujustdontunderstando