前提
最近、ポインタを勉強し始めたばかりなので、そもそも理解しきれていない可能性があります。
ご教授いただければ幸いです。
問題
以下のプログラムでは、格配列の文字列の個数3が定数としてプログラム中(for文の制御式)に埋め込まれている。計算によって求めるように書き換えたプログラムを作成せよ。
c
1#include <stdio.h> 2 3int main (void) 4{ 5 int i; 6 char a[][5] = {"LISP", "C", "Ada"}; 7 char *p[] = {"PAUL", "X", "MAC"}; 8 9 for(i = 0; i < 3; i++) 10 printf("a[%d] = \"%s\"\n", i, a[i]); 11 for(i = 0; i < 3; i++) 12 printf("p[%d] = \"%s\"\n", i, p[i]); 13 14 return 0; 15}
該当のソースコード
c
1#include <stdio.h> 2 3int main(void) 4{ 5 int i, n = 0; 6 char a[][5] = {"LISP", "C", "Ada"}; 7 char *p[] = {"PAUL", "X", "MAC"}; 8 9 for (i = 0; a[i][0] != '\0'; i++) { 10 n++; 11 } 12 13 for (i = 0; i < n; i++) { 14 printf("a[%d] = \"%s\"\n", i, a[i]); 15 } 16 17 for (i = 0; i < n; i++) { 18 printf("p[%d] = \"%s\"\n", i, p[i]); 19 } 20 21 return 0; 22}
実行した結果
c
1a[0] = "LISP" 2a[1] = "C" 3a[2] = "Ada" 4a[3] = "" 5a[4] = "??6" 6a[5] = "???" 7p[0] = "PAUL" 8p[1] = "X" 9p[2] = "MAC"
回答3件
あなたの回答
tips
プレビュー