無題
Posted: 2010年9月11日(土) 17:01
たアスタリスクで作成した直角三角形 を印字するプログラムを関数を使って作り直してみよう。指定された文字を指定 された回数だけ連続して印字する処理を関数化する。この関数の宣言を
int run(char c, int length);
とする。すなわち、関数runは文字cを長さlengthだけ印字する。 戻り値は印字した文字の個数(すなわち、length)とする。
この関数runを作成し、キーボードより入力された任意の正の整数を高さと する直角三角形を印字するプログラムを作成せよ。
% decWithFunc
正の整数: 15
1: ***************
2: **************
3: *************
4: ************
5: ***********
6: **********
7: *********
8: ********
9: *******
10: ******
11: *****
12: ****
13: ***
14: **
15: *
%
というもんだいで、自分が書いたソースをコンパイルすると
『引数1個の'run'を渡しますにより、キャストなしで整数からポインタを作りました』
とエラーが出ます。これはどういう意味で、どう直せばよいでしょうか?下が私が書いたソースです。
#include<stdio.h>
# define BUFFER_SIZE (256)
int get_int(void)
{
char buf[BUFFER_SIZE];
fgets(buf, BUFFER_SIZE, stdin);
return atoi(buf);
}
//プロトタイプ宣言
int run(char mark,int length){
int j;
for(j=0 ;j < length ;j++){
printf("%c",mark);
}
printf("\n");
return length;
}
int main(void){
int number,i;
printf("数字を入力せよ: ");
number = get_int();
if(number > 0){
for(i=0 ; i < number ; i++){
printf("%d:",i+1);
//空らん
run(" ",i+1 );
//*
run("*",number-i);
}
}
return 0;
}
int run(char c, int length);
とする。すなわち、関数runは文字cを長さlengthだけ印字する。 戻り値は印字した文字の個数(すなわち、length)とする。
この関数runを作成し、キーボードより入力された任意の正の整数を高さと する直角三角形を印字するプログラムを作成せよ。
% decWithFunc
正の整数: 15
1: ***************
2: **************
3: *************
4: ************
5: ***********
6: **********
7: *********
8: ********
9: *******
10: ******
11: *****
12: ****
13: ***
14: **
15: *
%
というもんだいで、自分が書いたソースをコンパイルすると
『引数1個の'run'を渡しますにより、キャストなしで整数からポインタを作りました』
とエラーが出ます。これはどういう意味で、どう直せばよいでしょうか?下が私が書いたソースです。
#include<stdio.h>
# define BUFFER_SIZE (256)
int get_int(void)
{
char buf[BUFFER_SIZE];
fgets(buf, BUFFER_SIZE, stdin);
return atoi(buf);
}
//プロトタイプ宣言
int run(char mark,int length){
int j;
for(j=0 ;j < length ;j++){
printf("%c",mark);
}
printf("\n");
return length;
}
int main(void){
int number,i;
printf("数字を入力せよ: ");
number = get_int();
if(number > 0){
for(i=0 ; i < number ; i++){
printf("%d:",i+1);
//空らん
run(" ",i+1 );
//*
run("*",number-i);
}
}
return 0;
}