私は簡単な質問があります。私はC言語で特定のファイルの行をスキャンするプログラムを書いています。行の唯一のフレーズが "Atoms"ならば、スキャンを停止して、それがどの行にあるかを報告します。これは私が持っているもので、どうやら私はポインタに整数を比較してるので、コンパイルされていません:。特定の文字列が見つかるまでループする
:(「string.hの」もちろん含まれている
char dm;
int test;
test = fscanf(inp,"%s", &dm);
while (test != EOF) {
if (dm=="Amit") {
printf("Found \"Atoms\" on line %d", j);
break;
}
j++;
}
ファイルが既にで開かれましたinp = fopen(..)
そして、それは正しく開くことを確認するためにチェック...
私も別のアプローチを使用したい、それが動作することができればと思いまして。代わりに、個々の文字列をスキャンするのは、私のように行全体をスキャン可能性そのようなもの:
// char tt[200];
//
// fgets(tt, 200, inp);
とような何か:
if (tt[] == "Atoms") break;
感謝を! Amit
私はまだ他の回答にコメントできないようですが、私は下のJohnのアドバイスは良くないと指摘したいと思います。 fscanfがそこにデータを格納しようとする前に、ポインタを有効なメモリブロックに初期化する必要があります。ポインタがどこにでも向いているので、彼が下で与えたコードを呼び出すことは非常に危険です! –
ありがとう@Kit。私はstrncmpを使い終わったので、私はあなたの答えを変えたのです。私はそれが私のケースの方がはるかに良いと思うし、私はこのstrncmp機能を知らなかった。再度、感謝します。 – Amit
私は助けることができてうれしい!私の答えはすごく辛かったですが、できるだけたくさんの軽食を詰め込もうとしました。 –