我是C++的新手,并从MSDN C++初学者指南中学习.
尝试strcat函数时它可以工作,但我在开始时得到三个奇怪的字符.
这是我的代码
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main() {
char first_name[40],last_name[40],full_name[80],space[1];
space[0] = ' ';
cout << "Enter your first name: ";
gets(first_name);
cout << "Enter your last name: ";
gets(last_name);
strcat(full_name,first_name);
strcat(full_name,space);
strcat(full_name,last_name);
cout << "Your name is: " << full_name;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是输出
Enter your first name: Taher
Enter your last name: Abouzeid
Your name is: Y}@Taher Abouzeid
Run Code Online (Sandbox Code Playgroud)
我想知道为什么Y} @出现在我的名字之前?
您正在创建的数组充满了随机数据。C++ 将为数据分配空间,但不会使用已知数据初始化数组。strcat 会将数据附加到字符串的末尾(第一个 '\0'),因为字符数组尚未初始化(并且充满随机数据)这将不是第一个字符。
这可以通过替换来纠正
char first_name[40],last_name[40],full_name[80],space[1];
Run Code Online (Sandbox Code Playgroud)
和
char first_name[40] = {0};
char last_name[40] = {0};
char full_name[80] = {0};
char space[2] = {0};
Run Code Online (Sandbox Code Playgroud)
在= {0}将设置在第一元件到“\ 0”,这是一个字符串结束符号,和C ++将自动所有非指定用“\ 0”元素填充(条件是被指定的至少一种元素)。