• 締切済み

テキストファイルの内容を2次元配列に格納したい

課題で用意されたテキストファイルを読み込み、空白を区切りとする文字列の単位で配列に格納したいのですが、やりかたがわかりません。 ソースプログラムですが #include<stdio.h> #include<string.h> #include<ctype.h> #define MAX 1000 int TextSplit(char *fname, char (*SpStr)[50]); int main(void) { int i, n; char fname[MAX], SpStr[MAX][50]; int Split; FILE *fp; printf("input File =>"); scanf("%s", fname); Split = TextSplit(fname, SpStr); printf("\n %d[文字列数] \n", Split); return 0; } int TextSplit(char *fname, char (*SpStr)[50]) { int i, j, k; char Readstr[MAX]; FILE *fp; fp = fopen(fname, "r"); if(fp == NULL) { printf("ファイルオープン失敗"); return 1; } i = 0; while(fscanf(fp, "%s", SpStr) != EOF) { i++; } fclose(fp); return i; } 以上のソースプログラムですが、内容は「空白で区切る文字列の単位の総数を表示する」ものになっています。 今日の20時までに終わらせないといけないので、ご教授お願いします。 使ってるソフトはMicrosoft Visual Studioです。

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.5

いまさらどうでもいいけど fscanf(fp, "%s", SpStr) はおかしい.

回答No.4

TextSplitの中のwhileループにSpStr++;を挿入するだけです。 while(fscanf(fp, "%s", SpStr) != EOF) { SpStr++; i++; }

回答No.3

TextSplitのみ: int TextSplit(char *fname, char (*SpStr)[50]) { char Readstr[MAX]; int ntoken; FILE *fp; fp = fopen(fname, "r"); if(fp == NULL) { printf("ファイルオープン失敗"); return 0; } ntoken = 0; while ( fgets(Readstr, MAX, fp) ) { char* token; for ( token = strtok(Readstr," \n"); token != NULL; token = strtok(NULL," \n") ) { strcpy(SpStr[ntoken], token); ++ntoken; } } fclose(fp); return ntoken; }

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.2

>課題で用意されたテキストファイル 参考までに、その内容を見せていただくことは可能でしょうか。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

文字列じゃなくて数値ならできますか?

Ligulss
質問者

補足

いえ、数値or文字列の問題ではなく 格納という作業のしかたがわからないので 数値でいけるのかもわからりません。

関連するQ&A