Error: expected primary-expression before ']' token in C++
Error: expected primary-expression before ']' token in C++
我正在尝试使用向量 c++98
创建类似于 string.find
的东西,但我无法修复此错误。
我简化了代码,只留下了错误。
如果我可以获得有关如何实现此目标的帮助。
#include <iostream>
#define MAX 99999
using namespace std;
int free_pos (int v[]);
int find_line (int v[], int pos);
int main() {
char text[MAX];
int loc_key[MAX],start_line[MAX]; //
for(int i=0; i<free_pos(loc_key);i++) {
cout << "Line: " << i+1;
int pos = find_line(start_line[],loc_key[i]); //Here is the error
for(int j=start_line[pos];j<start_line[pos+1];j++) {
cout<<text[j];
}
cout<<endl;
}
return 0;
}
int free_pos (int v[]) {
for(int i=0;i<MAX;i++){
if(v[i] == 0)
return i;
}
return 99;
}
int find_line (int v[], int pos) {
for(int i=0; i<free_pos(v); i++) {
if(v[i]==pos)
return v[i];
if(v[i]< pos)
return v[i-1];
}
}
你的两个函数
int free_pos (int v[]);
int find_line (int v[], int pos);
将数组作为输入,但随后您尝试调用 int pos = find_line(start_line[],loc_key[i]);
,它应该只采用数组的名称 ,因为它是被程序称为数组。如果你按照以下方式编写这两个函数,你可以更容易(在我看来)得到它:
int free_pos (int* v);
int find_line (int* v, int pos);
它们与您的函数做同样的工作,但您可以看到它们的参数是:一个 int 指针 (array) 和一个 int。然后,调用函数只需要 int 指针,在你的例子中是 start_line
,和整数 loc_key[i]
。如果你仍然无法理解它,你可以阅读数组的动态内存分配,它是这样完成的:int* arr; arr = new int[your_size];
- 我认为这样想更清楚。
我正在尝试使用向量 c++98
创建类似于 string.find
的东西,但我无法修复此错误。
我简化了代码,只留下了错误。
如果我可以获得有关如何实现此目标的帮助。
#include <iostream>
#define MAX 99999
using namespace std;
int free_pos (int v[]);
int find_line (int v[], int pos);
int main() {
char text[MAX];
int loc_key[MAX],start_line[MAX]; //
for(int i=0; i<free_pos(loc_key);i++) {
cout << "Line: " << i+1;
int pos = find_line(start_line[],loc_key[i]); //Here is the error
for(int j=start_line[pos];j<start_line[pos+1];j++) {
cout<<text[j];
}
cout<<endl;
}
return 0;
}
int free_pos (int v[]) {
for(int i=0;i<MAX;i++){
if(v[i] == 0)
return i;
}
return 99;
}
int find_line (int v[], int pos) {
for(int i=0; i<free_pos(v); i++) {
if(v[i]==pos)
return v[i];
if(v[i]< pos)
return v[i-1];
}
}
你的两个函数
int free_pos (int v[]);
int find_line (int v[], int pos);
将数组作为输入,但随后您尝试调用 int pos = find_line(start_line[],loc_key[i]);
,它应该只采用数组的名称 ,因为它是被程序称为数组。如果你按照以下方式编写这两个函数,你可以更容易(在我看来)得到它:
int free_pos (int* v);
int find_line (int* v, int pos);
它们与您的函数做同样的工作,但您可以看到它们的参数是:一个 int 指针 (array) 和一个 int。然后,调用函数只需要 int 指针,在你的例子中是 start_line
,和整数 loc_key[i]
。如果你仍然无法理解它,你可以阅读数组的动态内存分配,它是这样完成的:int* arr; arr = new int[your_size];
- 我认为这样想更清楚。