また質問させていただきたいと思います。
あいかわらずプログラミング知識のない者ですが、どうぞよろしくお願いします。
ポインタについての課題に取り組んでいるのですが、作ったプログラムを実行するとSegmentation fault (core dumped)となって、実行できません。
一応コンパイルはできたのですが...
使っているのはC言語で、ソフトはcgwinです。
課題の内容は、文字列の長さを求める関数 str_len2() を作成すること.str_len2() は,ある文字列の先頭アドレスを実引数として与えられたとき,その文字列の長さ('\0' および '+', '-' のいずれかの直前までの byte数)を返す関数です.なお,この関数の第1行を
unsigned int str_len2(char *c)
と定めます("char *c" は "char c[]" としても同じです.コンパイラは,どちらも「c は char型のポインタ変数である」と解釈します).
私のプログラムを下に貼ります。
どうぞよろしくお願いします。
配列について
Re: 配列について
まず、Segmentation fault (core dumped)の意味はわかりますか?
わからなければ、翻訳でもかけてみて、意味をさっとググッてみましょう。
次に上から順にどんな処理をしているか考えてみて
上のエラーがどこで起きているか突き止めてみましょう。
そうすれば、原因はわかるのではないでしょうか。
わからなければ、翻訳でもかけてみて、意味をさっとググッてみましょう。
次に上から順にどんな処理をしているか考えてみて
上のエラーがどこで起きているか突き止めてみましょう。
そうすれば、原因はわかるのではないでしょうか。
Re: 配列について
*(c+i)が'\0'でない、かつ'+'でない、かつ'-'でないときは、ループするようになっています。つまり、無限ループになるということです。
5行目の||を全て&&に変換すると、うまく行きます。
そうすることによって、*(c+i)が'\0'でない、または'+'でない、または'-'でないときは、ループするようになります。
おおまか合っておりますので、あと一歩でしたね!
課題、頑張ってくださいヽ(*´∀`)ノ
5行目の||を全て&&に変換すると、うまく行きます。
そうすることによって、*(c+i)が'\0'でない、または'+'でない、または'-'でないときは、ループするようになります。
おおまか合っておりますので、あと一歩でしたね!
課題、頑張ってくださいヽ(*´∀`)ノ
Re: 配列について
「または」では?超絶右留斗羅天才プログラマー さんが書きました:*(c+i)が'\0'でない、かつ'+'でない、かつ'-'でないときは、ループするようになっています。つまり、無限ループになるということです。
non
-
- 記事: 44
- 登録日時: 12年前
Re: 配列について
あら、ついうっかりΣ(ノ≧ڡ≦)てへぺろnon さんが書きました:「または」では?超絶右留斗羅天才プログラマー さんが書きました:*(c+i)が'\0'でない、かつ'+'でない、かつ'-'でないときは、ループするようになっています。つまり、無限ループになるということです。
間違いのご指摘ありがとうございます(*´∀`)
ただの超絶右留斗羅天才プログラマーです。同人ゲーム制作進捗度:7%
Re: 配列について
超絶右留斗羅天才プログラマーさん、ハッカーさん、ご指摘ありがとうございました。
whileの条件式が間違っていましたね。
ご指摘を受けて、初めて気づきました。
否定が絡むと、中々難しいです。
上記の点を直したところ、正しく実行できました。
本当にありがとうございました。
whileの条件式が間違っていましたね。
ご指摘を受けて、初めて気づきました。
否定が絡むと、中々難しいです。
上記の点を直したところ、正しく実行できました。
本当にありがとうございました。