我写了一个小程序,我无法将二维数组words[10][max_row_size]
传递给函数notify
。如果可以,请你帮助我。附上一部分代码。
#include <iostream>
#include <cstdlib>
#include <fstream>
#include <string.h>
#include <unistd.h>
using namespace std;
#define max_row_size 100
int notify(char words[max_row_size]);
int main(void) {
ifstream dictionary("dictionary.txt");
//ditrionary looks like
//hello-world
//universe-infinity
//filename-clock
string s;
int i=0;
char words[10][max_row_size];
while(!dictionary.eof()){
dictionary>>s;
strcpy(words[i++],s.c_str());
}
notify(words[max_row_size]);
return 0;
}
int notify(char words[max_row_size]){
cout<<words[1];
return 0;
}
It is a full code of my programm, may be it can help you
这是一个错误
/home/rem/projects/github/notify_words/notify_words.cpp: В функции «int notify(int, char*)»:
/home/rem/projects/github/notify_words/notify_words.cpp:65:113: предупреждение: format «%s» expects argument of type «char*», but argument 3 has type «int» [-Wformat]
答案 0 :(得分:0)
你自己传递单词:char** words
是函数中的参数:即
int notify(char** words){...
答案 1 :(得分:0)
我猜你想要通知只打印一个单词,所以你需要将通知更改为
int notify(char* word){
cout<<word;
return 0;
}
但是你调用notify的方式可能也不会产生你想要的结果。
notify(words[max_row_size]);
将尝试从10个单词中获取第10个单词。这可能会导致崩溃。
你可能想在你的while循环中放置最后的通知并像这样调用它
notify(words[i]);
另外,如果你的词典中有10个以上的单词,那你就麻烦了。您可能想要尝试vector而不是数组(因为矢量可以动态增长)。
答案 2 :(得分:0)
二维数组的最简单方法(显然,你可以输入你的数组):
int notify(std::array<std::array<char, max_row_size>, 10>& words){
std::cout << words[1];
return 0;
}
最简单的字符串数组:
int notify(std::array<std::array<std::string>, 10>& words){
std::cout << words[1];
return 0;
}
这样可以防止数组衰减到函数中的指针,因此大小仍然是已知的。
答案 3 :(得分:0)
notify(char words[][max_row_size])
将整个数组传递下来
然后使用notify(words);
调用方法
但实际上你应该使用标准容器而不是数组