[c++] Problema con strcmp

di il
9 risposte

[c++] Problema con strcmp

Salve, quando compilo il mio programmino mi da errore in strcmp ma non capisco il motivo!
Chiedo il vostro aiuto


#include <cstdlib>
#include <iostream>
#include <string.h>

using namespace std;

int main(int argc, char *argv[])
{
// Database riguardante la biblioteca

struct libro
{
char titolo[60];
int anno;
char autore[50];
char genere[30];
};

typedef libro idlibro;
idlibro biblioteca[1000];

int i;
int n;
int j;
int s;
int r;


cout<<" Quanti libri devo inserire? ";
cin>>n;



for(i=0;i<n;i++) // Ciclo for per l'inserimento dei dati
{
cout<<" Inserire il titolo del libro ";
cin>>biblioteca.titolo;
cout<<" Inserire l'anno di pubblicazione del libro ";
cin>>biblioteca.anno;
cout<<" Inserire l'autore del libro ";
cin>>biblioteca.autore;
cout<<" Inserire il genere del libro";
cin>>biblioteca.genere;
cout<<"\n\n\n\n";
}

for(i=0;i<n;i++)
{

for(j=i;j<n;j=j++)
{
r=strcmp(s1<s2);

if(r>0)
{
s=biblioteca;
biblioteca=biblioteca[j];
biblioteca[j]=s;
}


}}

for(i=0;i<n;i++) // ciclo riguardante la stampa
{
cout<<"\n Titolo del libro "<<biblioteca.titolo;
cout<<"\n\n";
cout<<"\n Anno di pubblicazione "<<biblioteca.anno;
cout<<"\n\n\n";
cout<<"\n Autore del libro"<<biblioteca.autore;
cout<<"\n\n\n\n;


}


system("PAUSE");
return EXIT_SUCCESS;
}

9 Risposte

  • Re: [c++] Problema con strcmp

    Ciao,

    Quello che hai scritto:
    r=strcmp(s1<s2);
    E'un'espressione priva di significato, visto che la sintassi della strcmp è ben differente:
    int strcmp( const char *string1, const char *string2 );
    Ciaociao
  • Re: [c++] Problema con strcmp

    bottomap ha scritto:


    Ciao,

    Quello che hai scritto:
    r=strcmp(s1<s2);
    E'un'espressione priva di significato, visto che la sintassi della strcmp è ben differente:
    int strcmp( const char *string1, const char *string2 );
    Ciaociao
    Quindi come dovrei modificare strcmp nel mio programmino?
  • Re: [c++] Problema con strcmp

    r=strcmp(s1,s2);
  • Re: [c++] Problema con strcmp

    Smanettone ha scritto:


    r=strcmp(s1,s2);
    Ho ricompilato il codice con r=strcmp(s1,s2); ma c++ mi da ancora errore
  • Re: [c++] Problema con strcmp

    Ciao,

    Sii più specifico... che significa "ti da errore"? Non compila? Non linka? Crasha? Non da i risultati che ti aspetti?
  • Re: [c++] Problema con strcmp

    bottomap ha scritto:


    Ciao,

    Sii più specifico... che significa "ti da errore"? Non compila? Non linka? Crasha? Non da i risultati che ti aspetti?
    Quando compilo il codice mi da errore sulla riga ----> r=strcmp(s1,s2);
  • Re: [c++] Problema con strcmp

    Ciao,
    ad occhio mi pare che s1 ed s2 non siano state definite e non abbiano quindi nessun valore...
    Io sono all'inizio con il c++, avevo fatto un corso e poi preso e lasciato diverse volte....
    Per curiosità, hai poi risolto il problema, di che si trattava?
    Ciao!
  • Re: [c++] Problema con strcmp

    Ciao, ancora non ho risolto l'errore!
  • Re: [c++] Problema con strcmp

    Ciao,

    dipende da come vuoi ordinare l'elenco di libri.
    Se utilizzi il titolo, prova così:

    r = strcmp (biblioteca.titolo, biblioteca[j].titolo);

    (ordine crescente)

    quando effettui lo swap, la variabile 's' deve essere di tipo idlibro
    (nel tuo esempio è di tipo 'int' [numero intero])
    es:

    if (r>0) {
    idlibro s_temp = biblioteca;

    biblioteca = biblioteca[j];
    biblioteca[j] = s_temp;
    }

    ciao
Devi accedere o registrarti per scrivere nel forum
9 risposte