PDA

Visualizza la versione completa : Lettere da minuscole a maiuscole (Linguaggio C)


Cyber-X91!
19-02-2013, 19:57
Se un esercizio mi chiede di trasformare le lettere minuscole in maiuscole dopo il punto in un testo come devo fare? Cioè io ho ad esempio due frasi in un file:

Ciao. dove vai?
"fate luogo voi", rispose Lodovico. "la diritta e` mia".

Nella prima fase cè il punto e lo spazio mentre nella seconda dopo Lodovico ce è il punto ma ci sono anche lo spazio e le virgolette... come dico al programma che mi deve trasformare la l in L se dopo il punto ce uno spazio e delle virgolette e la d in D se ce lo spazio?

Ho fatto in questo modo ma non so se è corretto dato che mi da un errore:


int main(){
char testo[100];
int i = 0, k;
FILE *sourceFile;
FILE *destinationFile;
sourceFile = fopen("testo.txt", "r");
destinationFile = fopen("testout.txt", "w");
while(!feof(sourceFile)){
fscanf(sourceFile, "%s", testo);
fprintf(destinationFile,"%s ", testo);
for(i = 0; i<strlen(testo); i++){
if((testo[i] == ".") && (testo[i + 1] == " ")){
testo [i + 2] = (testo[i + 2] + 32);
}
if((testo[i] == ".") && (testo[i + 1] == " ") && (testo[i + 2] == "249")) {
testo[i + 3] = (testo[i + 3] + 32);
}
}
fclose(sourceFile);
fclose(destinationFile);
printf("%s",testo);
system("PAUSE");


}

Mi da questo errore:

"Comparison between pointer and integer" ai due if... Mi sono accorto che l'errore è nelle virgolette ma non so risolverlo... all ultimo if ho messo 249 che corrisponde alle " in codice ASCII dato che non sapevo come metterle...

Alex'87
19-02-2013, 20:38
" " indica char[]
' ' indica char

Non puoi fare un confronto con un char e un char[]... (e comunque le stringhe non si confrontano con == ma con strcmp)

Cyber-X91!
19-02-2013, 20:46
scusami ma non ho capito come devo fare... Io devo vedere se in quella posizione cè il punto o lo spazio che faccio creo altri array solo per il punto? e poi con strcmp posso confrontare due stringhe... io ho bisogno solo di quel carattere

Alex'87
19-02-2013, 21:36
Cambia i vari confronti tipo testo[i] == "." con testo[i] == '.'

Su cosa stai studiando C? La differenza tra "A" e 'A' è veramente roba "base" ;)

oregon
19-02-2013, 21:45
Originariamente inviato da Alex'87
Su cosa stai studiando C? La differenza tra "A" e 'A' è veramente roba "base" ;)

In effetti ... così non imparerai a programmare in C ...

Cyber-X91!
19-02-2013, 23:02
Mettendo le apici mi dà altri errori ci avevo già provato :unz: Sto studiando su Corso Completo di Programmaizone di Deitel e Deitel della Apogeo

Comunque ehm ci ho riprovato ed avete ragione voi... Apici...

Probabilmente mi dava qualche altro errore che non riguardavano le apici... Eh vabbe scusate la mia ignoranza... Un giorno imparerò anche io :) Comunque per portare da minuscola a maiuscola senza usare le funzioni toupper e tolower va bene aggiungere 32 in ASCII al carattere?

oregon
19-02-2013, 23:18
Sicuramente imparerai ma non affronti lo studio in maniera corretta. Perché non cerchi queste informazioni sul libro al posto di andare a "caso" e poi chiedere nel forum quando hai il problema?

E così che dovresti imparare ... cerca nel libro la parte che riguarda le stringhe e i caratteri ...

Per la domanda che hai fatto, ti ricordo solamente i codici ASCII di due lettere

A 65
a 97

Fai tu ...

Loading