Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    156

    [C++]fgets e stringhe a capo

    in un esercizio si deve prendere da un file un intero messo nella prima riga e una stringa nella seconda tipo:
    codice:
    5
    c'è qualquadra che non cosa
    ecco il mio codice
    codice:
    #include <iostream>
    #include <stdio.h>
    using namespace std;
    
    int main(){
    FILE *fr;
    int i;
    char stringa[20];
    fr=fopen("input.txt","r");
    fscanf(fr,"%d",&i);
    fgets(stringa,20,fr);
    printf("%d%s",i,stringa);
    return 0;
    }
    l'intero viene letto ma della stringa neanche l'ombra.
    non posso usare fscanf(fp,"%s",stringa) perchè al primo spazio si fermerebbe, a me serve la stringa per intero.

    come mai si comporta così?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    In questo caso viene letto il \n che c'è dopo il valore numerico ... Prova con

    fscanf(fr,"%d\n",&i);
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    156
    saggio... provo e le faccio sapere

    ok, funziona, grazie mille.

    ulteriore problema: si legge da un file una prima riga che contiene un intero (che è il numero restante di righe) e poi si leggono tutte le altre righe e si modificano con un algoritmo (ma qui faccio solo che modifico tutte le lettere della stringa in "l"

    codice:
    int main(){
    int righemax,line,i;
    char str[80];
    FILE *fr;
    fr=fopen("input.txt","r");
    fscanf(fr,"%d\n",&righemax);
    for(line=1;line<=righemax;line++) /*leggo ad una ad una le stringhe*/
                 {
                 fgets(str,80,fr);
                     for(i=0;i<=strlen(str);i++) {str[i]='l';} /*sostituisco i caratteri con una elle*/
                 printf("%s",str);
                   }
    return 0;
    }
    prendendo un file del genere
    codice:
    2
    aaa
    bbb
    ecco l'output

    codice:
    llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllm  <---che....?!?!

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.