###前提
書籍で勉強している学生です。
書籍の解答がないため問題のヒントや解説をしていただけると嬉しいです。
###問題
以下のプログラムでは、格配列の文字列の個数3が定数としてプログラム中(for文の制御式)に埋め込まれている。計算によって求めるように書き換えたプログラムを作成せよ。
lang
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}
###該当のソースコード
lang
1#include <stdio.h> 2 3int str_search(char *p[]){ 4 int i = 0; 5 while(p[i++]) ; 6 7 return i; 8} 9 10int main (void){ 11 12 /*上と同じ為省略*/ 13 14 for(i = 0; i < str_search(a); i++){ 15 printf("a[%d] = \"%s\"\n", i, a[i]); 16 } 17 for(i = 0; i < str_search(p); i++){ 18 printf("p[%d] = \"%s\"\n", i, p[i]); 19 } 20 21 return 0; 22}
###疑問点
まず、配列の個数を数えようと関数str_searchを作成したのですが、引数にポインタを使ってしまい、よく分からなくなってしまいました。
加えて、aの配列には上手く対応するけれども、pの配列には対応していない等の問題がでてきました。
自作の関数の仕組みが正しいのかどうか、引数が適切なのか・・・
解決策等を教えて頂きたいです。
###補足情報
書籍 : 新明解c言語 入門編
演習 11-2
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/21 12:54
2018/01/21 13:13
2018/01/21 13:18