fgetsで取得した文字列とint型の比較をするには?

解決


yuu  2008-05-03 22:16:57  No: 68231

初めて投稿させてもらいます。

fgets関数でテキストファイルからchar型の文字列を取得した後、最初と次の数字の部分を引数の数字と比較したくて、次のような感じに書いてみたんですがどうしてもif文の中に処理が入ってくれません。

findFile(int janru, int keisiki){
……
  while(fgets(fbuf, 255, file) != NULL){
    if(fbuf[i] == (char)janru){
      i = i + 2;
      if(fbuf[i] == (char)keisiki){
……

読み込んでいるテキストファイルがこんな感じです。

0,7,jjj,11.bmp
3,2,aaa,12.bmp
……

デバッグ中にfbufの中身を見てみても文字列の先頭に謎の文字が出てしまっていてどこが原因なのか良くわかりません。
因みに環境はVC++2005Expressです。
よろしくお願いします。


επιστημη  URL  2008-05-03 23:37:10  No: 68232

↓こんなんでいいのかな

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

int main() {
  char buf[256];
  int column1;
  int column2;
  char column3[64];
  char column4[64];
  FILE* fp = fopen("foo.txt","r");
  if ( fp == NULL ) return 1;
  while ( fgets(buf, 255, fp) != NULL ) {
    column1 = atoi(strtok(buf,",\n"));
    column2 = atoi(strtok(NULL,",\n"));
    strcpy(column3,strtok(NULL,",\n"));
    strcpy(column4,strtok(NULL,",\n"));
    printf("ジャンル=[%d] 形式=[%d] テキスト=[%s] 名前=[%s]\n", column1, column2, column3, column4);
  }
  fclose(fp);
}


yuu  2008-05-04 08:46:34  No: 68233

こんなに簡単に出来るなんて・・・

C++から勉強していて、Cの関数について勉強不足でした。

あと修正するために誤って連投してしまいすいませんでした。


yuu  2008-05-04 08:50:39  No: 68234

わかりにくい相談に乗っていただきありがとうございました


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加