1
#include <stdio.h>
#include <iostream>

using namespace std;

int main()
{

char * text = new char;
scanf("%c", text);
scanf("%c", text+1);

return 0;
}    

この下手な質問で申し訳ありません...文字列を一度に1文字ずつ読み取ろうとしています(すべての文字についてsthをチェックする必要があるため..)入力「ab」の場合、出力は「ab」であり、?random? 文字...「scanf("%c", text+1);」がないと機能しません どちらか..静的フィールドを使用してこれを行うことができますが、このバージョンでは最後に余分な文字が1つ与えられます..何が間違っていますか? :'(

4

1 に答える 1

2

charポインタを与えるものを割り当てますtext。次にアクセスtext[0]text[1]て、明らかに範囲外のアクセスを許可します。メモリに明示的にアクセスせず、std::string代わりにa を使用することを強くお勧めします。

std::string text;
for (std::istreambuf_iterator<char> it(std::cin), end; it != end; ++it) {
    // do whatever checks you need to do
    text.push_back(*it);
}
std::cout << "read '" << text << "'\n";
于 2013-10-04T23:47:58.780 に答える