Allora, ho seguito un'altra strada e sono arrivato a fare questo svolgimento
codice:
#include <iostream>
#include <cstdlib>
#define MaxC 1000
#define MaxP 80
using namespace std;
void leggi(char v [], char* vp [], int &nC, int &nP);
char * cerca(int c, char v[], char * vp[]);
void stampa(char s);
int main(int argc, char* argv[])
{
char v[MaxC];
char *vp[MaxP];
char c;
int nC = MaxC; int nP = MaxP;
leggi(v, vp, nC, nP);
for (int j=0; j<nC; j++)
{
//stampa(v[j]);
printf("%d", v[j]);
}
char *cerca(int c, char v[], char * vp[]);
system("Pause");
return 0;
}
void leggi(char v [], char* vp [], int &nC, int &nP)
{
char c;
nC=0;
nP=0;
int inizioParola=0;
while ((c=getchar())!='+' )//Salto tutto fino alla prima parola
while ((c=getchar())!='\n' )
{
if( (c>='A' && c<='Z') || (c>='a' && c<='z') || (c>='0' && c<='1'))
{
v[nC]=c;
nC++;
}
else if(c=='+')
{
v[nC]='\0';
nC++;
vp[nP]=&v[inizioParola];
nP++;
inizioParola=nC+1;
}
}
vp[nP]=&v[inizioParola];
nP++;
}
char *cerca(int c, char v[], char * vp[])
{
int k=0;
for (int i=0; i<MaxP; i++)
{
if(v[i] != c)
{
i++;
k++;
}
else return vp[k];
}
}
ma l'output non è quello giusto. Dove sbaglio???