创建char数组后,将其填充为垃圾

Roo*_*mey -2 c

输入一个单词,然后需要用相同数量的符号创建一个新单词,并且新单词必须仅用“ _”填充。

int main()
{
char word[30];
cout << "Enter word: ";
gets_s(word);
cout << word;
int k = strlen(word);
cout << "Amount of letters in word: "<< k << endl;
char *temp = new char[k];
for (int i = 0; i < k; i++)
{
    temp[i] = '_';
}
cout << temp << endl;

}
Run Code Online (Sandbox Code Playgroud)

tad*_*man 12

对于确实令人讨厌的C字符串,通常在C ++中可以避免使用,因此必须 NUL终止字符缓冲区:

char *temp = new char[k + 1];
for (int i = 0; i < k; i++)
{
  temp[i] = '_';
}
temp[k] = 0; // Terminated
Run Code Online (Sandbox Code Playgroud)

否则,您将继续读入随机内存并看到各种垃圾。

使用以下方法会容易得多std::string

std::string temp;
for (int i = 0; i < k; ++i) {
  temp += '_';
}
Run Code Online (Sandbox Code Playgroud)

您不必记住因为std::string不需要NUL终止,标准库在内部使用了另一种方法,并且会自动为您处理。

但是,等等,还有更多!

如果您现在就采取行动并使用,std::string您将可以使用以下出色的工具:

std::string temp(k, '_');
Run Code Online (Sandbox Code Playgroud)

更轻松!