我有以下代码:
#include <iostream>
#include <string>
#include <cstring>
#include <stdlib.h>
using namespace std;
class sekuence
{
public:
sekuence() {
string emra[5][20];
int m=0;
}
void shto (){
int i;
int j;
char temp[20];
cout << "=============================="<<endl
<< "Shkruani emrat qe doni te shtoni ne vektor"<<endl;
for(i=0; i < 5; i++){
cin >> emra[i];
m++;
}
for(i=0; i<5; i++)
{
for( j=1; j<5; j++){
if(strcmp(emra[j-1],emra[j]) > 0) {
strcpy(temp,emra[j-1]);
strcpy(emra[j-1],emra[j]);
strcpy(emra[j],temp);
}
}
}
}
void print(){
for(int i=0; i<5 ; i++){
cout<<endl<<emra[i];
}
cout <<m;
}
bool kerko (const char *gjej)
{
for(int i=0; i<5; i++)
{
if(strcmp(emra[i],gjej) == 0 )
return true;
return false;
}
}
int n (){return m;}
private:
int m;
char emra[5][20];
};
int main()
{ char* gjej;
int x;
sekuence d;
do{
cout<<endl << " =========================" << endl;
cout<<"1 - Funksioni i shtimit" <<endl;
cout<<"2 - Funksioni i afishimit" <<endl;
cout<<"3 - Funksioni i kerkimit" <<endl;
cout<<"4 - Funksioni i fshirjes" <<endl;
cout<<"5 - Dalje nga programi" <<endl<<endl;
cout<<"====================================" <<endl;
cin >> x;
switch (x)
{
case 1:
d.shto();
break;
case 2:
d.print();
break;
case 3:
cout<<"==================================" <<endl
<< "Shkruani emrin qe doni te kerkoni"<<endl;
cin >> gjej;
d.kerko(gjej);
break;
case 4:
break;
case 5:
cout << "Dalje nga Programi" <<endl;
exit (0);
default:
cout <<"Zgjedhje e gabuar";
return 0;
}}
while (x != 5);
return 0;
}
每次我尝试运行bool函数我都会收到错误..我不该做什么.. 当我尝试进入nam我想找到函数bool kerko()并退出编程..并希望找到我想要查找的字符 它打开了visual studio调试器.. 希望有人可以帮助我..这是第一次与班级合作......我真的无法处理这个...提前谢谢。
答案 0 :(得分:1)
您正在尝试访问gjej(char *)但没有分配内存。尝试使用new
char* gjej = NULL;
gjej = new char[NumberOfChars];
修改:现在使用new
代替malloc
..
std::string
会更好......
答案 1 :(得分:0)
根据您对kerko
函数的缩进,其中一个return
语句应移出for
循环:
bool kerko (const char *gjej)
{
for(int i=0; i<5; i++)
{
if(strcmp(emra[i],gjej) == 0 )
return true;
}
//*** Note the new location.
return false;
}
您拥有的布局使bool
函数始终在循环的第二次迭代之前返回。