2012-05-05 11 views
1

にこれは私のコードです。
問題が機能にあると確信していますが(おそらく問題は*ポインタです)、それを修正する方法がわかりません。Cセグメンテーション違反による間違ったポインタ

+0

サイドノート: 'getchar'は' int'と 'char'を返しません。 'c'を' int'に変更することを検討するべきです –

+0

ああありがとう:)私は間違いを修正しました! – polslinux

答えて

3

先行問題があります。あなたは同様にあなたが*s[i]を書くとき、あなたがsのインデックスを作成している

(*s)[i]='\0'; 

を必要とする代わりに、

*s[i++] = ... 

(*s)[i++] = ... 

を使用する必要があります。しかし、インデックス*sにしたいので、かっこが必要です。

私はコードの残りの部分をチェックしていませんが、実際にはエラーが多い場合は残りの部分をデバッグするのに役立ちます。

+0

ありがとう:)すべての今仕事:D – polslinux

+0

なぜですか?これはポストインクリメントです...だから私は '私'を取得し、 '私'を更新します... – polslinux

+0

@polslinuxはい私はあなたが正しいかもしれないと思う。私自身は、文字列に余分な文字を追加する方法を、ループと絡み合わせるのではなく、カプセル化しようとします。 –

1

問題は*s[i++] = (char)c;にあります。(*s)[i++] = (char)c;に括弧をつけて*にしてみてください。同様に(*s)[i] = '\0'

+0

あなたはそうだ:大きな穴があるxD – polslinux

+0

私はそうは思わない。これまでにバッファがいっぱいになると、常にバッファが拡張されます。したがって、常に1文字以上の余裕があります。 –

+0

@Totaldowner:いいえ、待って...あなたは確かですか?私はi ++をやったので、「次のi」とbを比較する!私は実際の位置と私を比較しない:D – polslinux

関連する問題