PDA

View Full Version : [C] Estrapolare caratteri da una stringa


RaouL_BennetH
09-01-2005, 18:05
Salve ragazzi. Non riesco a capire come fare per:

Ho ad esempio questa stringa:


CARTA SCELTA [] ASSO []


E mi servirebbe di estrapolare soltanto ASSO e memorizzarlo su un file.

Mi date una mano?

Fenomeno85
09-01-2005, 18:13
allora vediamo

1) te hai una situzione tipo char carta[]
2) file binario o di testo?

~§~ Sempre E Solo Lei ~§~

RaouL_BennetH
09-01-2005, 18:20
Originariamente inviato da Fenomeno85
allora vediamo

1) te hai una situzione tipo char carta[]
2) file binario o di testo?

~§~ Sempre E Solo Lei ~§~


allora, ho una situazione tipo:



char carta; /* non è un array */



e il file dove memorizzo è un file di testo.

Thx!!!

Fenomeno85
09-01-2005, 18:20
non capisco però cosa vuoi fare dalla stringa ... se te sai che c'è Asso che te frega estrarlo?

~§~ Sempre E Solo Lei ~§~

RaouL_BennetH
09-01-2005, 18:21
Originariamente inviato da Fenomeno85
non capisco però cosa vuoi fare dalla stringa ... se te sai che c'è Asso che te frega estrarlo?

~§~ Sempre E Solo Lei ~§~

perchè devo memorizzare solo ASSO e scartare tutto il resto.

Fenomeno85
09-01-2005, 18:26
per salvare su file di testo


#include <conio.h>
#include <stdio.h>

int main (){
FILE *fp;
char str[]="UELLA\n";
if ((fp=fopen("NOME_FILE.txt","wt"))==NULL){
printf ("\nImpossibile creare il file.\n");
return;
}
else{
fputs(str,fp);
}
return (1);
}


~§~ Sempre E Solo Lei ~§~

Fenomeno85
09-01-2005, 18:27
Originariamente inviato da RaouL_BennetH
perchè devo memorizzare solo ASSO e scartare tutto il resto.

domanda ma ASSO lo sai già a priori che c'è oppure vuoi scartare il pezzo di frase che non centra e prendere la parte che ti rimane?

~§~ Sempre E Solo Lei ~§~

RaouL_BennetH
09-01-2005, 18:34
Originariamente inviato da Fenomeno85
domanda ma ASSO lo sai già a priori che c'è oppure vuoi scartare il pezzo di frase che non centra e prendere la parte che ti rimane?

~§~ Sempre E Solo Lei ~§~

No, nel senso che potrebbe essere ASSO, oppure POCO, insomma, sono parole diverse fra loro ma che hanno sempre la stessa lunghezza e si trovano sempre nella medesima posizione all'interno della stringa.

Fenomeno85
09-01-2005, 18:36
ok ti posto il codice tra due secondi che te lo compilo per non darti trash code

~§~ Sempre E Solo Lei ~§~

Fenomeno85
09-01-2005, 18:53
#include <conio.h>
#include <stdio.h>
#include <string.h>

#define NUM 6 /* numero di caratteri della parola sa salvare + conteggiato /0 + /n*/
#define START 13 /* da dove parte la stringa che ti interessa */

int SaveToFile (char str[]){
FILE *fp;
strcat (str,"\n");
if ((fp=fopen("NOME_FILE.txt","a+t"))==NULL){
return (0);
}
else{
fputs(str,fp);
}
return (1);
}

int main (){
char word[NUM];
char str[]="Carta Scelta ASSO";
int ris, i;
for (i=0;i<NUM;i++){
word[i] = str[START+i];
}
word[i] = "/0";
ris = SaveToFile (word);
if (!ris) printf ("\nImpossibile creare il file.\n");
system ("PAUSE");
return (0);
}


non è il massimo aggiungi e modificalo te come ti serve.

~§~ Sempre E Solo Lei ~§~

RaouL_BennetH
09-01-2005, 18:58
Originariamente inviato da Fenomeno85

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

#define NUM 6 /* numero di caratteri della parola sa salvare + conteggiato /0 + /n*/
#define START 13 /* da dove parte la stringa che ti interessa */

int SaveToFile (char str[]){
FILE *fp;
strcat (str,"\n");
if ((fp=fopen("NOME_FILE.txt","a+t"))==NULL){
return (0);
}
else{
fputs(str,fp);
}
return (1);
}

int main (){
char word[NUM];
char str[]="Carta Scelta ASSO";
int ris, i;
for (i=0;i<NUM;i++){
word[i] = str[START+i];
}
word[i] = "/0";
ris = SaveToFile (word);
if (!ris) printf ("\nImpossibile creare il file.\n");
system ("PAUSE");
return (0);
}


non è il massimo aggiungi e modificalo te come ti serve.

~§~ Sempre E Solo Lei ~§~


Grazie mille! :) mi ci metto subito al lavoro :)

Fenomeno85
09-01-2005, 18:59
Originariamente inviato da RaouL_BennetH
Grazie mille! :) mi ci metto subito al lavoro :)

de nada spero che almeno un pò di base te l'abbia data ;)

~§~ Sempre E Solo Lei ~§~

RaouL_BennetH
09-01-2005, 22:46
Originariamente inviato da Fenomeno85
de nada spero che almeno un pò di base te l'abbia data ;)

~§~ Sempre E Solo Lei ~§~

di sicuro :D

ancora very thx!

DanieleC88
12-01-2005, 22:15
Originariamente inviato da RaouL_BennetH
No, nel senso che potrebbe essere ASSO, oppure POCO, insomma, sono parole diverse fra loro ma che hanno sempre la stessa lunghezza e si trovano sempre nella medesima posizione all'interno della stringa.
Scusatemi se mi intrometto in una discussione ormai conclusa, ma non si poteva fare così? È più facile, credo.

Cominciare modificando di poco la SaveToFile di Fenomeno85;
int SaveToFile (char * str, size_t len)
{
FILE *fp;

if ((fp=fopen("NOME_FILE.txt","a+t"))==NULL){
return (0);
}
else
{
/* scrive len caratteri nel file; se len è minore di 0 copia l'intera stringa */
fputs(strncpy(str,(len >= 0 ? len : strlen(str))),fp);
}
return (1);
}

Usare un puntatore all'inizio della parola nella stringa (se la posizione è fissa, non c'è bisogno di estrarre con un ciclo for, meglio far copiare solo i caratteri necessari alla strncpy in SaveToFile);
#include <conio.h>
#include <stdio.h>
#include <string.h>

#define NUM 4 /* lunghezza effettiva della stringa da estrarre */
#define START 13 /* posizione di partenza */

int main ()
{
char * str="Carta Scelta ASSO";

ris = SaveToFile((word+START),NUM);
if (!ris) printf ("\nImpossibile creare il file.\n");
system ("PAUSE");
return (0);
}