- ベストアンサー
どなたか、教えていただけませんでしょうか(C言語)?
皆様のお知恵を拝借したく思いまして 投稿させていただきました C言語についての質問なのですが (1)文字配列の引数を一度mainからプロトタイプ関数へ渡し 関数で宣言して表示。 (2)さらにその関数内で、値を変更して mainで表示する 方法を教えていただきたく思いますので、宜しくお願い致します
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
No.1です。 >これらの文が機能するのは、argc >= 2 の場合であることに留意してください。 >argc == 1 の場合、つまり、実行時の引数を与えなかった場合はプログラムが落ちてしまうおそれがあります。 >argcの値をチェックしてから、argv[]にアクセスする必要があります。 だからこのプログラムは穴(エラー処理等)だらけだって最初に書いてあるじゃん。 んなこた分かってるし、あなたに言われなくても他にも留意すべき点が幾つもあることもわかってるよ。 だけどそれを全部書くのはこっちも面倒だし、全部書いてるとコードも長くなるし、長くなるほど質問者さんが一番知りたい「核心」の部分がボヤけてくるわけだよ。 だから些末な所は質問者さんに自分で補ってもらって、核心の部分だけを書いたんだよ。
その他の回答 (2)
- asuncion
- ベストアンサー率33% (2127/6289)
> printf("元はこの値 argv[1]:%s\n", argv[1]); > func( argv ); > printf("でもこういう値に変更したよーん argv[1]:%s\n", argv[1]); これらの文が機能するのは、argc >= 2 の場合であることに留意してください。 argc == 1 の場合、つまり、実行時の引数を与えなかった場合は プログラムが落ちてしまうおそれがあります。 argcの値をチェックしてから、argv[]にアクセスする必要があります。
お礼
asuncion様 回答ありがとうございます 昨日、この回答を参考に自分でも勉強してみて、理解出来てきましたので 本当に感謝しております ありがとうございました
- crew21
- ベストアンサー率26% (58/222)
やりたいことってこういうこと? 穴だらけのプログラムだけど、やりたいことはやってると思う。穴(エラー処理等)は、必要に応じてご自分で考えてください。 #include <stdio.h> #include <memory.h> void func(char *argv[]); int main( int argc, char *argv[] ) { printf("引数の数は %d\n", argc); //このコードはあまり意味無し(ワーニング逃れ) printf("元はこの値 argv[1]:%s\n", argv[1]); func( argv ); printf("でもこういう値に変更したよーん argv[1]:%s\n", argv[1]); return( 0 ); } void func(char *argv[]) { memcpy(argv[1], "12345", 5); } 仮に上のコードをコンパイルしてtest.exeを作ったなら、test abcde とコマンドプロンプトに入力して試してみるといい。
お礼
crew21様、今回はありがとうございました 実際に入力して行ってみたら、以外とわかり易かったので 自分でももう少し勉強してみたいと思います ありがとうございました
補足
crew21様 ありがとうございます 早速行ってみたいと思います ちなみに、2次元配列(char型)でも同様な方法で 出来ますでしょうか? 重ね重ねご迷惑をお掛けいたします
お礼
crew21様 ありがとうございます なんとか、あれから自分でも色々補ってみて おかげ様で完成できました 本当にありがとうございました これからも、より一層の勉強をして参りたいと思います