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

こんにちは私はファイルの行を印刷し、 ":"で始まる行をジャンプしようとしましたが、うまくいきません。ファイルから行を読み込んでジャンプするC

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

使用この - - これに代え

+1

コードがあれば、 'コンパイルべきではない(ライン[0] == ":"){'(または、少なくとも、警告を生成する必要があります)。文字を文字列と比較することはできません。代わりに '': ''を使用してください。コンパイラの警告に注意してください - コンパイラはあなたのことよりもCについて多くのことを知っています。もし警告すれば、それが正しいと仮定し、コードを修正して警告する必要があります。 ( 'file'を使う前に' 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の答えは良いですが、私は、各行が4つの単語を知っていたので、私もこの解決策を見つける(念のsomeneするのに便利です)

3

"行はint型である" ので はまた、私はラインを印刷することはできません[0]には、警告を与える

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

-​​3210は、文字列リテラルである":"と異なり、int(Cool Guyが指摘する)タイプです。

+1

'':''は 'char'ではなく' int'型です。 –

+0

@CoolGuy文字リテラルを修正してください。 – ameyCU

+0

ありがとう、それは働いた –

関連する問題