2011-12-16 94 views
3

我在這裏設置一個指向名字的指針,一個指向名字再指向一個長度。如何在我使用cout << strlen(tail);時告訴我長度爲3?即使我輸入的東西是12?指針和cstring的長度

#include <iostream> 
#include <stdio.h> 
#include <string.h> 
using namespace std; 

int main() 
{ 
    char name[0]; 
    cout << "Please enter your name: "; 
    cin.getline(name, 256); 
    cout << "Your name: " << name << endl; 

    char* head = name; 
    cout << head[6] << endl; 

    char* tail = name; 
    cout << strlen(tail); 

    return 0; 
} 
+0

提示:通常你應該在C++中使用`string`而不是`char *`。 – amit 2011-12-16 20:34:44

+1

對於格式明確的問題+1。 – 2011-12-16 20:35:01

回答

6

隨着

char name[0]; 

您分配大小0在其中存儲數據的緩衝區。你需要讓你將進入最長的字符串(加1爲NUL終止),這將是256在這種情況下足夠大(因爲你正在閱讀255個字符,並與cin.get(name, 256)一個NUL):

char name[256]; 
5

將名稱聲明爲零長度。這將是一個問題。