- 締切済み
テキストファイルの内容を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です。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- Tacosan
- ベストアンサー率23% (3656/15482)
いまさらどうでもいいけど fscanf(fp, "%s", SpStr) はおかしい.
- akayoroshi
- ベストアンサー率50% (46/91)
TextSplitの中のwhileループにSpStr++;を挿入するだけです。 while(fscanf(fp, "%s", SpStr) != EOF) { SpStr++; i++; }
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
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)
>課題で用意されたテキストファイル 参考までに、その内容を見せていただくことは可能でしょうか。
- Tacosan
- ベストアンサー率23% (3656/15482)
文字列じゃなくて数値ならできますか?
補足
いえ、数値or文字列の問題ではなく 格納という作業のしかたがわからないので 数値でいけるのかもわからりません。