Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    35

    aiutatemi - problemi con una stringa in C

    Ciao a tutti vorrei sopporvi questo quesito:
    ho un file di testo chiamato rubrica.txt all'interno del quale ci sono queste tre stringhe:
    caino abele 111111
    giulio cesare 22222
    pippo pluto 444444

    io vorrei fare un programmino in cui io chiedo al programma di visualizzarmi tra le tre stringhe presenti in rubrica.txt solo quella che inzia con la parola caino.

    potete aiutarmi...almeno ad indirizzarmi sulla strada giusta!!!
    grazie a tutti

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    167
    codice:
    #include<stdio.h>
    #include<string.h>
    
    int main()
    {
     FILE *fp;
     char stringa[80];
     char miastringa[6];
     int x = 1;
    
      if ((fp = fopen("rubrica.txt","r")) == NULL)
     {
    	fprintf(stderr, "Problemi nell'apertura del file\n");
            return -1;
     }
    
     do{
    	fgets(stringa,80,fp);
            strncpy(miastringa,stringa,5);
    	x = strcmp(miastringa,"caino");
    
     }while(x != 0);
     
    
    fprintf(stdout,"Miastringa = %s\n",miastringa);
    
    return 0;
    
    }
    ciao.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    35
    grazie mille ...ciaooooooooo

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    35

    questo e per level

    Ciao purtroppo il tuo codice sorgente non funziona... guarda che ho aperto una nuova discussione.... oggi
    ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    167
    L'ho testato e funziona benissimo, che problemi ti dà ? Adesso cerco l'altra discussione.
    ciao

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    35
    Scusami tantissimo se ti disturbo...se hai trovato la mia nuova discussione meglio evito di spiegarti di nuovo...
    supponiamo che la parola caino non sia la prima stringa ma si trovi nell'ultima stringa... esempio
    nel file rubrica.txt sono contenute queste tre stringhe:
    pippo pluto 123
    caino abele 258
    luca rossi 123
    io vorrei che il mio programma visualizzi solo la stringa caino abele 258
    il tuo programma purtroppo questo non lo fa...quando lo eseguo mi appare la solita finestra nera del dos il cursore che lampeggia in alto a destra e non succede nulla...io il codice sorgente lo eseguo con dev c++ spero che il problema non sia nel mio compilatore...

    ti invio il tuo programma con alcune correzioni e commenti da me apportati, perpiacere guardalo e fammi sapere qualcosa.

    -----------------------------------------------------------
    #include<stdio.h>
    #include<string.h>

    int main()
    {
    FILE *fp;
    char stringa[80];
    char miastringa[6];
    char nome;

    int x = 1;

    puts("\nInserire un nome da ricercare: \n");
    gets(nome);


    fp = fopen("rubrica.txt" , "r" );
    if(fp == NULL)
    {
    printf( "errore apertura file\n");
    exit(1);
    }

    do {

    fgets(stringa,sizeof(stringa),fp);
    strncpy(miastringa,stringa,80);
    /* hai scritto strcmp invece è strncmp*/
    /* ho inserito una variabile nome , che rappresenta quello che io voglio ricercare*/
    x = strncmp(miastringa, nome , 5);
    } while(x != 0);


    fprintf(stdout,"Miastringa = %s\n",miastringa);



    system("PAUSE");
    return 0;
    }
    --------------------------------------------------------------------
    ciao e grazie mille attendo tue risposte

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    167
    L'ho ritestato e non dà problemi sia che la parola si trovi nella prima o nell'ultima linea. Infatti mettendo il ciclo
    codice:
    do{
    	fgets(stringa,80,fp);
            strncpy(miastringa,stringa,5);
    	x = strcmp(miastringa,"caino");
    
     }while(x != 0);
    viene letta ogni singola linea finchè la prima parola non è "caino". Quindi non ha importanza in quale linea la scrivi. Ma scusa, puoi scrivere qual è il problema ? Una cosa sul mio lo devi modificare: fatto come è adesso io faccio stampare solo la parola "caino" e non tutta la stringa in cui è contenuta la parola. Basta che gli fai stampare stringa e non miastringa. miastringa la usi solo per il confronto.

    ciao.

  8. #8
    Utente di HTML.it L'avatar di mhmh
    Registrato dal
    Feb 2002
    Messaggi
    204
    [cut]
    do {

    fgets(stringa,sizeof(stringa),fp);
    strncpy(miastringa,stringa,80); /*ma miastringa è solo una stringadi 6 char vuoto.Non dovresti fare il strncmp con la stringa "nome"?*/
    /* hai scritto strcmp invece è strncmp*/
    /* ho inserito una variabile nome , che rappresenta quello che io voglio ricercare*/
    x = strncmp(miastringa, nome , 5);/*qui ti ritorna un valore vuoto perchè miastringa è vuoto*/
    } while(x != 0);

    [cut]

    correggetemi se sbaglio...

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    167
    Originariamente inviato da mhmh
    [cut]
    do {

    fgets(stringa,sizeof(stringa),fp);
    strncpy(miastringa,stringa,80); /*ma miastringa è solo una stringadi 6 char vuoto.Non dovresti fare il strncmp con la stringa "nome"?*/
    /* hai scritto strcmp invece è strncmp*/
    /* ho inserito una variabile nome , che rappresenta quello che io voglio ricercare*/
    x = strncmp(miastringa, nome , 5);/*qui ti ritorna un valore vuoto perchè miastringa è vuoto*/
    } while(x != 0);

    [cut]

    correggetemi se sbaglio...
    Infatti è sbagliato, copia 80 caratteri in una stringa di 6 e ovviamente manca la memoria. Infatti la mia strncpy copiava 5 caratteri di stringa in miastringa e non 80. strncmp non so nemmeno se esiste, strcmp compara due stringhe. miastringa non è assolutamente vuota perchè gli ho copiato con la strncpy precedente 5 caratteri. Ripeto, il mio funziona perfettamente, è ovvio che se viene fatta una strncpy di 80 caratteri in miastringa che è un char[6] non può funzionare.

    ciao.

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    35
    ciao adesso proverò a fare le opportune modifiche poi ti farò sapere
    grazie mille ciaooooooo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.