#実現したいプログラム
c言語でテキストファイル内の何人分かのデータ(名前 番号)を配列に格納し、乱数を用いてその中の一人分の名前と番号のみを表示する。
#ソースコード
#include <stdio.h> #include <stdlib.h> #include <time.h> #define NINZU 3 typedef struct str { char name[50]; char gakuseki[7]; } data; int main(void){ FILE *fp; char fname[] = "gakuseki.txt"; char line[256]; //1行の最大文字数 char name[50]; //名前用文字配列 char gakuseki[7]; //学籍番号 int i,j; data data[NINZU]; srand(1); // 乱数の初期化 //ファイルオープン動作 fp = fopen(fname, "r"); // ファイルを開く。失敗するとNULLを返す。 if(fp == NULL) { printf("ファイルが開けん!\n"); return -1; } //while開始 while(fgets(line, 256, fp) != NULL) { sscanf(line, "%s %s", name, gakuseki); i=rand()%NINZU; //ランダム関数呼び出し for(j = 0; j < sizeof(data[i].name) / sizeof(data[i].name[0]); j++) { data[i].name[j] = name[j]; } for(j = 0; j < sizeof(data[i].gakuseki) / sizeof(data[i].gakuseki[0]); j++) { data[i].gakuseki[j] = gakuseki[j]; } } printf("%s %s\n",data[i].name[j],data[i].gakuseki[j]); fclose(fp); return 0; }
#出力結果
(null) (null)
そのコードでは出力結果が (null) (null) になりません。
質問を編集して、出力結果が (null) (null) になるコードまたは現在の最新のコードを追記してください。
回答2件
あなたの回答
tips
プレビュー