PDA

Visualizza la versione completa : [C] Funzione analoga alla fprintf ma che lavora su stringhe


sakertorten
05-06-2012, 20:25
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

oregon
05-06-2012, 20:28
sprintf

sakertorten
05-06-2012, 20:29
mi correggo cerco la fscanf non fprintf

Scara95
05-06-2012, 20:30
sprintf per scrivere su stringhe, ma sembra che a te serva leggere da stringhe, quindi sscanf

sakertorten
05-06-2012, 20:42
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

oregon
05-06-2012, 21:09
a1 a2 e a3 non sono inizializzati ... che ti aspettavi?

zucchino
05-06-2012, 22:07
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ì:


sscanf(arg1,"%[^_]_%[^_]_%s",a1,a2,a3);

Loading