- 締切済み
C言語 ポインタ 関数
キーボードから文字列”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 } とりあえずこんな感じなんですけど、出来ませんでした...
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- don_go
- ベストアンサー率31% (336/1059)
#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) = ';'; } キーボーから入力して...の部分は、自分で考えてみて下さい。
- skybluez
- ベストアンサー率20% (90/441)
#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); }
- skybluez
- ベストアンサー率20% (90/441)
#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: } のあたりに構文上の誤りがある ありがとうございます、 しかしコンパイルできません、私の使っているコンパイラーのためでしょうか?