PDA

Visualizza la versione completa : [C] Replace


supergeniux
22-07-2008, 02:33
Ho questo codice:



#include <stdio.h>
#include <stdlib.h>

main()
{
int c;

c = getchar();

while (c != EOF)
{
putchar(c);
c = getchar();
}

system("pause");
return 0;
}


Devo sostituire il carattere A inviato in output con il numero 1, lo spazio con \t ed ogni backslash con \\.

Come procedo? Purtroppo il motore di ricerca del forum, non mi molto utile.

oregon
22-07-2008, 02:50
Usare l'istruzione if ... ?

supergeniux
22-07-2008, 02:53
if verifica
#define 'a' '1'

mi da errore

MacApp
22-07-2008, 04:04
Originariamente inviato da supergeniux
if verifica
#define 'a' '1'

mi da errore
Se non sai cosa sia un "if" o una "#define" (e qui sembra che tu non li conosca entrambi), mi pare arduo che tu possa ottenere un valido suggerimento.
;-)

supergeniux
22-07-2008, 13:06
Originariamente inviato da MacApp
Se non sai cosa sia un "if" o una "#define" (e qui sembra che tu non li conosca entrambi), mi pare arduo che tu possa ottenere un valido suggerimento.
;-)

L'if, so cosa e come funziona, il #define lo sto conoscendo ora. Siccome mi piace fare le cose per bene, ho preso un libro in mano (Linguaggio C di Kernighan e Ritchie) ed ho iniziato a studiarlo, ma ahime, il libro spiega come fare replace di variabili (#define VARIABILE NUOVAVALORE) e non come fare il replace di una singola lettera presente i una variabile.

In ASP, in aiuto avrei la funzione REPLACE, in C non saprei.

mondobimbi
22-07-2008, 13:20
#define un comando del preprocessore non del compilatore C.
Un uso banale potrebbe essere

#define PI 3.14159

ed il preprocessore sostituirebbe tutte le occorrenze di PI con 3.14159 , prima di compilare il sorgente.
ciao
sergio

mondobimbi
22-07-2008, 14:00
oregon intendeva una soluzione del tipo



#include <stdio.h>
#include <stdlib.h>

int main()
{
int c;

c = getchar();

while (c != EOF)
{
if ( c == 'A' ) c ='1';
else if ( c == ' ' ) c = '\t';

putchar(c);
c = getchar();
}

return ( 0 );

}



senza scomodare il preprocessore
ciao
sergio

supergeniux
23-07-2008, 01:51
Perfetto, grazie mille.

Ero convinto che, eseguendo il controllo su tutta la variabile, non fosse stato possibile fare il replace di una sola lettera.


:ciauz:

Loading