我在这里设置一个指针指向一个指针,另一个指向再次指向名称,但得到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;
}
答案 0 :(得分:6)
使用
char name[0];
您正在分配一个大小为0
的缓冲区来存储数据。你需要使它足够大,以便输入最长的字符串(加上NUL终结符为1),在这种情况下为256(因为你读的是255个字符,而cin.get(name, 256)
是一个NUL): / p>
char name[256];
答案 1 :(得分:5)
名称声明为零长度。这将是一个问题。