2013-10-04 26 views
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)它不起作用;'無論..我可以做到這一點使用靜態字段,但這個版本給了我一個額外的字符..我做錯了什麼? :'(動態字符字段讀一個字符的時候

+1

剛剛看了一個'的std :: string'和遍歷它(最好用一個標準的算法)。 – chris

回答

2

您分配了一個char給你的指針text然後訪問text[0]text[1]它清楚地給出越界進入我強烈建議你不要明確地訪問內存,並且使用std::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"; 
+0

非常感謝,我沒有意識到我被分配指針只是一個字符..問題是,我們現在禁止使用std :: string,因爲我們需要學習如何使用指針.. 所以我說的方式d it,我需要分配一定長度的字段,並且只要大小足夠就使用它。現在它看起來像這樣: char * text = new char [10]; 012fscanf(「%c」,text); cout << text << endl; 但我仍然有同樣的問題,即使我嘗試&text [0] ...我已經超出了界限嗎? – user2848383

相關問題