Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [C] Funzione analoga alla fprintf ma che lavora su stringhe

    Salve a tutti,
    avrei bisogno di una funzione c che lavori come la fprintf ma non legga da file ma da una stringa.

    Per capirci ho una stringa del tipo:
    str = "j_nom1_nom2";
    oppure:
    str = "seq_nom1_nom2"

    con fprinft farei:

    fprintf(str,"%s_%s_%s",tip,primo,secondo);

    ottenendo:
    tip = "seq"
    primo = "nom1"
    secondo = nom2"


    Qualcuno può aiutarmi?!?

    Saluti

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    sprintf
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    mi correggo cerco la fscanf non fprintf

  4. #4
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    sprintf per scrivere su stringhe, ma sembra che a te serva leggere da stringhe, quindi sscanf
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  5. #5
    Grazie per la pronta risposta!!!
    Visto che siete stati cosi preparati provo a farvi vedere il codice che ci ho scritto
    e ha chiedere secondo voi perche fa questo strano risultato:

    #include<stdio.h>
    int main(int argc, char *argv[]) {
    char arg[100], arg1[] = "ciao_a_tutti",a1[10],a2[10],a3[10];

    sscanf(arg1,"%s_%s_%s",a1,a2,a3);
    printf("\n%s\n%s\n%s\n",a1,a2,a3);
    }


    in output ottengo:

    ciao_a_tutti
    ti
    t�

    Saluti e grazie

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    a1 a2 e a3 non sono inizializzati ... che ti aspettavi?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    156

    Re: [C] Funzione analoga alla fprintf ma che lavora su stringhe

    Originariamente inviato da sakertorten
    sscanf(arg1,"%s_%s_%s",a1,a2,a3);
    il primo %s si "mangia" tutta la stringa (che per definizione termina al primo spazio, tab o \n)
    se le parti di nome che vuoi spezzare è separato dal carattere '_' potresti modificare così:
    codice:
    sscanf(arg1,"%[^_]_%[^_]_%s",a1,a2,a3);

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.