Ciao a tutti, devo creare un programma che, dato un file di testo, scambi l'ordine delle lettere in ogni parola per ogni riga, e metta il risultato in un altro file, che viene creato dal codice
(es Sparsa le trecce morbide
sull'affannoso petto
Deve diventare: edibrom eccert el asrapS
ottep osonnaffa'llus)
Ho usato due funzioni per lo scambio di elementi di un array, ma sento che sono ancora in alto mare, metto qua sotto il programma
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#define L_STR 81
#define N 50
/*
IP descr Descrizione della stringa da leggere.
IK+OP strLetta Stringa letta.
*/
void readString(const char* descr, char* strLetta) {
printf("%s", descr);
scanf("%s", strLetta);
} /* readString */
void swap(char *a, char *b) {
char c = *a;
*a = *b;
*b = c;
}
int arrSwap(char *p, int n){
int i;
for(i=0; i<n/2; i++)
swap(&p[i],&p[n-i-1]);
return *p;
} /* arrSwap */
int inverseLine(const char *nomeFI, const char *nomeFO){
int i;
char ch[L_STR],ch2[L_STR];
FILE *inF, *outF;
inF=fopen(nomeFI, "r");
if(inF == NULL)
return -1;
outF=fopen(nomeFO, "w");
if(outF==NULL)
return -2;
while(true){
fgets(ch,L_STR,inF);
if(feof(inF))
break;
for(i=0;i<N;i++){
ch2[i]=arrSwap(ch,N);
fprintf(outF,"%s\n",ch2);
}
}
fclose(inF);
fclose(outF);
return 0;
}
int main(void) {
char nomeFI[L_STR], nomeFO[L_STR];
readString("Nome del file d'input: ", nomeFI);
readString("Nome del file d'output: ", nomeFO);
printf("Il file %s e` stato elaborato in %s con esito %d.\n",
nomeFI, nomeFO, inverseLine(nomeFI, nomeFO));
return 1;
} /* main */
Per adesso il file che mi crea come output mi dà dei valori a caso, vorrei capire dove sbaglio