2014-02-15 3 views
1

Я читаю текстовый файл, и я знаю, сколько строк текстового файла. Я использую fgets для чтения в строке, а затем strtok, чтобы разбить его на куски. Я пытаюсь прочитать первый символ строки и принять меры, если это «P» или «A.». Я предполагаю, что я могу рассматривать строку как массив символов. извините, если этот вопрос супер базовый. Я могу сказать, что предупреждает, что я делаю что-то неправильно. Есть ли лучший способ сделать что-то вроде ниже?Создание символа из строки

char line[1024]; 


while (i < LINE_MAX) 
    { 
     fgets(line, sizeof (line), fp); 

     strtok(line," "); 
     printf("%c",line[0]); 
     if (line[0] == "P") 
      printf("the letter is P\n");   
     if (line[0] == "A") 
      printf("the letter is A"); 
} 

thread.c: В функции 'главный': thread.c: 96: 15: предупреждение: сравнение между указателем и целым числом [по умолчанию включено] thread.c: 96: 15: предупреждение: сравнение с строковым литералом приводит к неуказанному поведению [-Waddress] thread.c: 98: 15: предупреждение: сравнение между указателем и целым числом [включено по умолчанию] thread.c: 98: 15: предупреждение: сравнение со строковым литералом приводит к неуказанному поведение [-Waddress] Compilation завершен успешно.

+1

Символьные литералы (например, '' P'') должны быть окружены одиночными, а не двойными кавычками. –

+0

В качестве альтернативы (но менее оптимизированного) OP может использовать 'strncmp (строка,« P », 1)», если сравнивать строки, это то, что ему нужно. – Diti

+0

Спасибо за быстрый ответ! – user3287789

ответ

2

Вы должны одиночные кавычки вокруг char в С.

if (line[0] == 'P'){} 

"" используется для строк.

+0

Чтобы быть ясным, когда я получаю элементы строкового массива, мне нужно использовать одну цитату. Я предполагаю, что если (строка == "P") будет правильной, если я буду сравнивать всю строку? – user3287789

+1

Для одиночной кавычки 'char'. Для сравнения строки используйте функцию 'strcmp'. – haccks

+0

Действительно оцените советы! – user3287789

0

Я думаю, что он должен работать Но только если вы удалите двойные кавычки (""), поскольку они используются для строки, не для символа. Вместо line[0] == "P" используйте line[0] == 'P'.

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