Salve ragazzi, non riesco a capire un problema riguardo un esercizio. su un file ho una serie di parole su due rughe differenti di cui alcune iniziano con maiuscola altre no... nella prima riga ho 'Dramma soprattutto Palla Illusione', nella seconda 'Cappello osso imbuto'... io dovrei stampare solamente le parole che iniziano con la lettera maiuscola ed eliminare delle eventuali doppie lettere... le parole con la lettera maiuscola riesco a stamparle, però mi da un piccolo errore nella stampa...questo è il codice fino ad ora (riguardo l'eliminazione delle doppie devo ancora farlo)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 200
FILE *aprifile(char[]);
void leggifile(FILE*,char[]);
int main(int argc, char** argv) {
FILE *fp,*ff;
char nomi[N];
printf("Inserisci il nome del file da leggere: ");
fp=aprifile("r");
printf("Inserisci il nome del file su cui scrivere: ");
ff=aprifile("w");
leggifile(fp,nomi);
fclose(fp);
fclose(ff);
return (EXIT_SUCCESS);
}
FILE* aprifile(char mode[]){
FILE* p;
char nome[N];
scanf ("%s",nome);
if((p=fopen(nome,mode))!=NULL){
return p;
}
}
void leggifile(FILE* p,char n[]){
int i=0;
while(!feof(p)){
fgets(n,N,p);
for(i=0;i<strlen(n);i++){
if(n[i]>='A' && n[i]<='Z'){
while(n[i]!=' '){
putchar(n[i]);
i++;
}printf(" ");
}
}
}
}
il risultato che genera è
Dramma Palla Illusione
@? Cappello
non capisco cosa sono i segni davanti a 'Cappello'... invece come posso fare per eliminarli, o anche scrivere tutto sula stessa riga?