C言語でポインタを勉強しています。
C言語でポインタを勉強しています。
それで、以下のようなプログラムを作成したのですが思ったようにいきません。何が原因でしょうか。
標準入力から全ての文字列を読み取った後、発言者と、「です」を付加した文字列を表示するプログラム
1 # include < stdio . h >
2 # include < string . h >
3
4
5 typedef enum {
6 NAME , // 発言者
7 COMMENT , // 発言
8 MAX _ RECORD _ ARRAY // レコード の 属性 の 数
9 } RecordArrayIndex ;
10
11
12 static const int MAX _ RECORD = 100 ; // 最大 の レコード 数
13 static const int MAX _ STRING = 32 ; // 発言者及 び 発言 の 最大文字数 ( ナル文字 を 含 む )
14
15 // 関数 プロトタイプ 宣言
16 // record に 発言者 ( name ) と 、 その 発言 ( comment ) を 設定 する 。
17 void setNameAndCommentToRecord ( char * name , char * comment , char * record []) ;
18 // record の 発言 の 語尾 に 「 です 」 を 付 け 加 える 。
19 void appendCommentMeow ( char * record []) ;
20
21 int main ( void ) {
22 char * record [ MAX _ RECORD ][ MAX _ RECORD _ ARRAY ] ;
23 char * name = " 太郎 " ;
24
25 int currentIndex = 0 ;
26 for ( ;; ) {
27 char comment [ MAX _ STRING ] ;
28 if ( gets ( comment ) == NULL ) {
29 break ;
30 }
31 setNameAndCommentToRecord ( name , comment , record [ currentIndex ]) ;
32 appendCommentMeow ( record [ currentIndex ]) ;
33 currentIndex ++ ;
34 }
35
36 int const availableIndex = currentIndex ;
37 for ( int index = 0 ; index < availableIndex ; index ++) {
38 printf ( "% s : 「 % s 」 \ n " , record [ index ][ NAME ] , record [ index ][ COMMENT ]) ;
39 }
40
41 return 0 ;
42 }
43
44 void setNameAndCommentToRecord ( char * name , char * comment , char * record []) {
45 record [ NAME ] = name ;
46 record [ COMMENT ] = comment ;
47 }
48
49 void appendCommentMeow ( char * record []) {
50 strcat ( record [ COMMENT ] , " です " ) ;
51 }
52