2016-04-06 5 views
0
#include <stdio.h> 
#include <string.h> 

int main(int argc, char* argv[]) { 
    FILE* file = fopen("questions-words.txt", "r"); 
    char line[256]; 

    while (fgets(line, sizeof(line), file) != NULL) {     
    if (line[0]==":") { 
     continue; 
    } 
    printf("%s", line); 
    } 
    fclose(file); 
    return 0; 
} 

Привет, Я пытаюсь напечатать строки файла и перетащить те, которые начинаются с символа «:», но он, похоже, не работает. Кроме того, я не могу напечатать строку [0] это дает предупреждение, потому что «линия типа ИНТ»чтение и переход строк из файла C

+1

Код не должен составлять' если (строка [0] == ":") {'(или, как минимум, должны генерировать предупреждения). Вы не можете сравнивать символ со строкой; вместо этого используйте '': ''. Предупреждайте предупреждения компилятора - компилятор знает намного больше о C, чем вы, и если он предупреждает, вы должны предположить, что он прав, и должен исправить ваш код, чтобы он не предупреждал вас об этом. (Вы должны также проверить, что 'fopen()' преуспевает, прежде чем использовать 'файл', ваша программа, скорее всего, потерпит крах, если он не сможет открыть файл. ... добавлено, в то время как user1320881 добавлял тот же комментарий.) –

+2

Также всегда проверяйте, файл преуспел. – Unimportant

+0

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

ответ

0
#include <stdio.h> 
    #include <string.h> 


    int main(int argc, char* argv[]) 
    { 


     FILE* file = fopen("questions-words.txt", "r"); /* should check the result */ 
     if (file==NULL){ 
      return-1; 
     } 
     char line[256]; 
     char first[20],second[20],third[20],fourth[20],temp[20]; 


     while (! feof(file)) { 
      fscanf(file,"%s \t", first); 
      if (!strcmp(first,":")){ 
       fscanf(file,"%s \t",temp); 
      continue; 
       } 

       fscanf(file,"%s \t", second); 
       fscanf(file,"%s \t", third); 
       fscanf(file,"%s \t", fourth); 
       printf("%s %s %s %s \n", first, second, third, fourth); 



     } 
       fclose(file); 

       return 0; 
    } 

ответ @ameyCu «s лучше, но так как я знал, что каждая строка имела 4 слова, которые я также найти это решение (только в случае, если это полезно для somene)

3

Вместо этого -

if (line[0]==":"){ 

использование этого -

if (line[0]==':'){ // note the single quotes 

Примечание - ';' имеет тип int (как указано Cool Guy) в отличие от ":", который является строковым литералом.

+1

'': '' имеет тип 'int', а не' char'. –

+0

@CoolGuy Исправить свой символ буквальный, мой плохой. – ameyCU

+0

Спасибо, он сработал –