電子書籍の厳選無料作品が豊富!

unsigned char* uchar_string(string* str) {
int length = str->length();
const char* cchar = str->c_str();
unsigned char* uchar = new unsigned char[length+1];

for(int i=0; i=length; i++) {
uchar[i] = (unsigned char)cchar[i];
}

return uchar;
}

int main() {
string str;
cin >> str;
unsigned char* uc;
uc = uchar_string(&str);
cout << uc;
delete uctest;

return 0;
}

このようにしたところ、cout << uc; が出力されず入力待ちとなり正常に動きませんでした。
原因がわからないです。原因と解決方法のご教授願います。

A 回答 (1件)

>このようにしたところ、cout << uc; が出力されず入力待ちとなり正常に動きませんでした。



入力待ち?
uchar_string()から戻ってきていないのではないですか?

>for(int i=0; i=length; i++) {
>uchar[i] = (unsigned char)cchar[i];
>}

ここで無限ループになっている…ハズです。
まず、iに0を設定します。
次にループ継続条件のi=lengthを実行して、iの値が書き換わります。
lengthが0ではないのでi=lengthは真となり、ループ継続が確定します。
uchar[i] = (unsigned char)cchar[i];が実行されます。
i++が実行されます。
再びループ継続条件の判定の為にi=lengthを実行して、iの値が書き換わります。
lengthが0ではないのでi=lengthは真となり、ループ継続が確定します。
uchar[i] = (unsigned char)cchar[i];が実行されます。
i++が実行されます。
再びループ継続条件の判定の為にi=lengthを実行して、iの値が書き換わります。
lengthが0ではないのでi=lengthは真となり、ループ継続が確定します。
   :(以下略)
    • good
    • 0
この回答へのお礼

っ!!!!
・・・orz
すごいです。迅速な対応ありがとうございました。

お礼日時:2011/08/10 01:24

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