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

using namespace std;

int main()
{

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

return 0;
}    

对不起这个蹩脚的问题......我试图一次读取一个字符的字符串(因为我需要检查每个字符的......)对于输入“ab”,输出是“ab”和一个?随机?字符...没有 'scanf("%c", text+1);' 将无法工作 要么..我可以使用静态字段来做到这一点,但是这个版本最后给了我一个额外的字符..我做错了什么?:'(

4

1 回答 1

2

你分配一个char给你指针text。然后,您访问text[0]text[1]清楚地给出了越界访问。我强烈建议您不要显式访问内存并使用 astd::string代替,例如:

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 回答