In C è necessario dichiarare le funzioni prima di poterle utilizzare, mentre suppongo che tu abbia provato a chiamare convertiMaiuscola prima di averla definita:
Originariamente inviato da Fix87
warning: conflicting types for 'convertiMaiuscola'
vuol dire che "convertiMaiuscola" è stata dichiarata più volte, in maniera diversa, e
note: previous implicit declaration of 'convertiMaiuscola' was here
indica dove è stata dichiarata la prima volta; nello specifico, dice "implicit" declaration, ovvero ti indica che il compilatore ha visto che hai provato a chiamare convertiMaiuscola prima che fosse dichiarata, e si è "inventato" una dichiarazione che però non si è visto confermare al momento della definizione della funzione.
In sostanza quindi quello che devi fare è:
- spostare il corpo della funzione convertiMaiuscola prima di ogni suo utilizzo; questo costituisce contemporaneamente la dichiarazione (dico che esiste e che ha certi parametri) e la definizione (dico cosa fa) della funzione; da lì in poi il compilatore avrà presente la funzione e la potrai richiamare tranquillamente;
- oppure, lasciare il corpo della funzione (la sua definizione) dove ti pare, ma mettere prima di qualunque suo utilizzo il suo prototipo (la sua dichiarazione), che consiste semplicemente nella linea in cui specifichi, nome, tipo restituito e argomenti della funzione seguito da un punto e virgola; in questa maniera da lì in poi il compilatore avrà presente che quella funzione esiste e prende quei parametri (per cui sa come interpretare il tuo codice), e si preoccuperà solo in seguito di "agganciare" quelle chiamate a funzione al codice effettivo della funzione.
In genere si preferisce il secondo metodo: in cima al file (subito dopo i #include) o in un file di inclusione a parte si inseriscono tutti i prototipi delle funzioni definite nel file, in modo che siano "pronte all'uso" in ogni punto del file. Nel tuo caso quindi avrai:
codice:
#include <stdio.h>
/* ... altri file di inclusione ... */
/* prototipo di convertiMaiuscola */
void convertiMaiuscola(char* string);
/* ... eventuali altri prototipi ... */
int main(void)
{
char prova[]="prova";
convertiMaiuscola(prova);
return 0;
}
/* definizione della funzione */
void convertiMaiuscola(char string[]){
int i, l;
l = strlen(string);
for(i=0; i<1; i++){
if(string[i]>=97&&string[i]<=122) //la prima lettera e' minuscola?
{
string[i] = string[i]-32; //si lo e', fa questo
}
else{
printf("\nLa lettera e' gia' maiuscola!\n");
}
}
printf("%s", string);
}
Tra parentesi, per verificare se una lettera è minuscola puoi usare la funzione islower() di <ctype.h>, e per convertirla in maiuscolo puoi usare la toupper().