指针和弦长

时间:2011-12-16 20:31:26

标签: c++ pointers cstring

我在这里设置一个指针指向一个指针,另一个指向再次指向名称,但得到lenth。为什么我使用cout << strlen(tail);它一直告诉我lenth是3?即使我输入的东西是12?

#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;
}

2 个答案:

答案 0 :(得分:6)

使用

char name[0];

您正在分配一个大小为0的缓冲区来存储数据。你需要使它足够大,以便输入最长的字符串(加上NUL终结符为1),在这种情况下为256(因为你读的是255个字符,而cin.get(name, 256)是一个NUL): / p>

char name[256];

答案 1 :(得分:5)

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