2016-08-14 3 views
2

У меня есть вопрос относительно указателей на цвет.Первый символ указателя

Я читаю файл на C, используя fgets. Это краткий обзор, чтобы вы могли понять, что я хотел бы сделать:

char configline[configmax_len + 1]; //configmax_len is the max value I need 
while(fgets(configline, sizeof(configline), config){ //config is the file 
    char *configvalue = strtok(configline, " "); 
    if (configvalue[0] == "#"){ 
     continue; 
    } 
    … 
} 

char * configvalue является указателем текущей строки читается. Я бы хотел проверить, является ли первый символ строки «#».

Однако, когда я делаю оператор if: if (configvalue[0] == "#"), компилятор выдает ошибку: comparison between pointer and integer.

Как я могу проверить, является ли первый символ строки указателем, указывающим на определенное значение?

+6

Сравнение строк в C с 'STRCMP()', а не '' == (так 'если (зЬгстр (configvalue, "#") = = 0) 'может быть правильным). И '' # "' является строкой; если вы хотите сравнить символ ''#'' использовать одинарные кавычки, а не двойные кавычки (так что 'if (configvalue [0] == '#')' тоже может быть прав). –

+0

спасибо jonathan, последнее замечание помогло с одиночными кавычками – Dezzy

ответ

5

попробуйте использовать

if (configvalue[0] == '#'){ 

это должно составить хорошо

4

Использовать одинарные кавычки для обозначения одного символа; двойные кавычки обозначают строки, которые представлены указателем на первый символ, следовательно, сообщение об ошибке.

+0

спасибо, что решила мою проблему. я хотел бы проголосовать за ваш ответ как полезный, но у меня нет достаточной репутации. :( – Dezzy

1

Strtok возвращает указатель на строку завершенную нулем, но вы сравниваете это с строковой константой, используя ==:

if (configvalue[0] == "#") 

Во-первых, configvalue указатель, так что вы могли бы сделать что-то вроде:

if (*configvalue == '#') 

Чтобы разыменовать указатель и получить первый символ в выходной строке.

Смежные вопросы