2011-12-16 82 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

将名称声明为零长度。这将是一个问题。