dポイントプレゼントキャンペーン実施中!

こんばんは。プログラムを勉強中の学生です。
詰まった部分があり、関連しそうな部分を勉強しましたが、問題が解決しなかったので、
こちらで質問させて頂きます。

今、とあるクラスで、

class Test{
........................................
public:
int Func1(char* str,){
unsigned int n = 0;
while(str != "\0"){ n += *str; str++;}          ←ここに<不適切なPtr>
return n % 3;
}

void Func2(char* str){
int i;
i = Calc(str);
.....................................
............................
}
};

のように宣言し、main()関数で、
int main(){

Test test;

test.Func2("ABC"); // Case1: エラーは起こらない

char s[]={"ABC"}; //Case2:不適切なPtrとなる。
test.Func2( s );

}


としていますが、上記のように、"ABC"を直接入れたときのみ、うまくいき、
他の方法で、char型のポインタを代入した際には、不適切なPtrと出てしまいます。

この原因を教えていただけないでしょうか?
最終的には、
cin >> s ;
などのように、キーボードから入力した値(文字列)を使いたいのですが、
現段階ではmain関数で "ABC"のように書かなければならず困っています。

A 回答 (1件)

>while(str != "\0")



while(*str != '\0')
じゃないですか?
つまり
while(*str)
でも良し。
    • good
    • 0
この回答へのお礼

確かにそうです…。ごめんなさい。めちゃくちゃ初歩的な事でした。
ですが別のところに目がいってたので、なかなか気づけなかったと思います。
ありがとうございました!

お礼日時:2011/02/09 07:56

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