Итак, я хочу создать программу на C, которая будет читать файл CSV, который может иметь некоторые пустые значения.Мне нужно, чтобы моя программа по-прежнему устанавливала токены равными пустому значению, если оно есть.Я написал этот код, так как strtok () будет просто игнорировать все пустые значения.
Программа работает, беря эту строку записи и разбивая ее на 3 токена с помощью этих проверок if.
char record[100] = "1,,3,";
char delimiter[] = ",";
char *token1 = 0;
char *token2 = 0;
char *token3 = 0;
static char *stringtobetokened = NULL;
char *p= 0;
stringtobetokened = record;
if ((p = strpbrk(stringtobetokened, delimiter)) != NULL) {
*p = 0;
token1 = stringtobetokened;
stringtobetokened = ++p;
printf("token1's value:%s\n", token1);
}
if ((p = strpbrk(stringtobetokened, delimiter)) != NULL) {
*p = 0;
token2 = stringtobetokened;
stringtobetokened = ++p;
printf("token2's value:%s\n", token2);
//this is where the issue is, this if check should be triggered since token2 is a empty value which should print the statement, token2 is null
if (token2 == NULL)
{
printf("token2 is null\n");
//insert some code that changes token2's value
}
}
if ((p = strpbrk(stringtobetokened, delimiter)) != NULL) {
*p = 0;
token3 = stringtobetokened;
stringtobetokened = ++p;
printf("token3's value:%s\n", token3);
}
Моя проблема в том, что, хотя он обнаруживает, что токен 2 пуст, проверка if
if (token2 == NULL)
не срабатывает.Я хочу, чтобы проверка запускалась, чтобы я мог вставить туда некоторый код, который изменил бы его значение.
если токен 2 не равен нулю или '\ 0', тогда каково его значение ??
Вот результаты, которые я получаю, когда запускаю указанный код:
token1's value:1
token2's value:
token3's value:3
Press any key to continue . . .