プロが教えるわが家の防犯対策術!

キーボードから文字列”abcdefg”を入力し、main関数で配列aryに格納する。
main関数から配列aryの先頭アドレスを副関数に引き渡す。
副関数で配列aryの最後尾の要素の内容を';'に変更する。
main関数で配列aryの内容を表示する。

この問題が解けません...
#include <stdio.h>

int main (void)
{

char ary[]="abcdef";
int *p;
int i,x;


p=&ary[0];

func(&i);


for (x=0;x<=7;x++){
printf("%s",ary[x]);


void func (int i)
if(i==\0) i=';'

else i++
}
return 0

}
とりあえずこんな感じなんですけど、出来ませんでした...

A 回答 (3件)

#include <stdio.h>


#include <string.h>

// 関数の型宣言が必要
void func (char *);

int main (void)
{
char ary[] = "abcdefg";

func(ary);

printf("%s",ary);

return(0);
}

void func (char *p)
{
//while(*p != 'g') p++;
//*p=';'; // 元プログラムでは最後の ; が抜けていた

// 最後が ’g’以外でも対応できる様に変更
*(p + strlen(p) - 1) = ';';
}

キーボーから入力して...の部分は、自分で考えてみて下さい。
    • good
    • 0

#include <stdio.h>



void func (char p[])
{
int i = 0;

while(p[i] != 'g') i++;
p[i]=';'

return;
}
int main (void)
{
char ary[] = "abcdefg";

func(ary);

printf("%s",ary);

return(0);
}
    • good
    • 0

#include <stdio.h>



int main (void)
{
char ary[] = "abcdefg";
char *p;

p = &ary[0];

func(p);

printf("%s",ary);

return(0);
}
void func (char *p)
{
while(*p != 'g') p++;
*p=';'
}

この回答への補足

設問1~1.c 10: 警告: 関数 func は宣言されていないので、int 型とみなす
設問1~1.c 17: func は矛盾した宣言をされている
設問1~1.c 20: } のあたりに構文上の誤りがある

ありがとうございます、
しかしコンパイルできません、私の使っているコンパイラーのためでしょうか?

補足日時:2006/03/09 23:32
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!