2016-04-06 29 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; 
} 

Merhaba Bir dosyanın satırlarını yazdırmaya ve ":" ile başlayanlara atlamaya çalışıyorum ama işe yaramaz.bir dosyadan satır oku ve atla C

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

kullanımı bu - - Bunun yerine

+1

(her ihtimale karşı somene için yararlıdır) [0] == ":") {'(veya en azından uyarı üretmelidir). Bir karakteri bir dizeyle karşılaştıramazsınız; yerine '': ''kullanın. Heed derleyici uyarıları - derleyici C hakkında çok şey biliyor, ve eğer uyarırsa, doğru olduğunu ve kodunuzu düzeltmeniz gerektiğini varsayın, böylece sizi uyarmaz. (Ayrıca, 'fopen()' nin 'file' kullanılmadan önce başarılı olduğunu da kontrol etmelisiniz; eğer program açılmazsa, programınız çökecektir.… Kullanıcı1320881 aynı yorumu eklerken eklenmiştir.) –

+2

Ayrıca eğer açıksa test edin. dosya başarılı oldu. – Unimportant

+0

Çok teşekkür ederim. Ben sadece mümkün olduğunca çok basitleştirilmiş kodu göndermek istedim ama bu ipucu için de teşekkürler –

cevap

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 'ın cevabı (hat iyidir ama her satırı 4 kelime Ben de bu çözüm bulmak olduğunu biliyordu çünkü kod eğer `derlemek olmamalıdır

3

"satırı türü int" Çünkü Ayrıca çizgiyi yazdıramıyorum [0] bir uyarı verir

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

Not - ';', ":" dizgisi biçiminde olduğu gibi int (Cool Guy tarafından belirtildiği gibi) tipindedir.

+1

'': ''int' değil, 'char' türündedir. –

+0

@CoolGuy Bir karakter değişmezini düzeltin, kötüyüm. – ameyCU

+0

Teşekkür ederim, Çalıştı –

İlgili konular