指针和弦长

son*_*ool 3 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;
}
Run Code Online (Sandbox Code Playgroud)

Set*_*gie 6

char name[0];
Run Code Online (Sandbox Code Playgroud)

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

char name[256];
Run Code Online (Sandbox Code Playgroud)


TJD*_*TJD 5

名称声明为零长度.那将是一个问题.