C++ 初始化函数c++;
我应该编写一个函数,将给定字符串初始化为多维数组words[word][size]。我的代码输出了一个相当奇怪的结果,我不确定我到底做错了什么。空格字符“”在我的测试用例中充当分隔符,我应该使它使每个单词占据一行。我的代码是:C++ 初始化函数c++;,c++,C++,我应该编写一个函数,将给定字符串初始化为多维数组words[word][size]。我的代码输出了一个相当奇怪的结果,我不确定我到底做错了什么。空格字符“”在我的测试用例中充当分隔符,我应该使它使每个单词占据一行。我的代码是: void initialize(char words[][MAX_WORD_SIZE], const char str[], char delimiter) { for(int i = 0, k = 0; i < MAX_WORD; i++) {
void initialize(char words[][MAX_WORD_SIZE], const char str[], char delimiter)
{
for(int i = 0, k = 0; i < MAX_WORD; i++)
{
if(str[k] != delimiter)
{
strcpy(words[i], &str[k]);
}
}
cout << *words;
}
我不明白我做错了什么。我想你忘了增加k:
strcpy(words[i], &str[k++]);
依我看你的代码不安全
每次将输入字符串的所有内容复制到固定大小的内存中时;您可以很容易地使用以下代码执行无效写入操作:,当我需要时:我们正在处理等等……如果您仔细查看,“我们正在处理pr”正好是20个字符。也许你也失踪了?我对编程很陌生。我不知道你们所说的无效写入到底是什么意思?无效写入发生在你们不受控制地将数据写入内存地址的地方。如果字符串长度超过MAX\u WORD*MAX\u WORD\u大小的字符数,您将写出单词capacity您真正想要的输出是什么?我已经为你们做了一些工作,但我想先知道这个问题。我想在数组的每个元素中输入一个单词。那么我将有:单词[1]=我们单词[2]=是单词[3]=工作
strcpy(words[i], &str[k++]);