Buon giorno a tutti, non riesco a compilare questo programma mi da sempre segmentation fault, lo scopo di questo esercizio è che non avendo capito ancora bene l'uso di doppio puntatori ho implementato un esercizio "prova" per scambiare i caratteri in ordine alfabetico.
esempio:
input: ciao
output: acio
input: prova
output: aporv
ecco il codice:
/* messaggio del compilatorecodice:#include<stdio.h> #include<string.h> #include<stdlib.h> #include<ctype.h> void BubbleSort_string(char **s,int n); void visualizza(char *s,int n); int main(){ char s[100]; int i,n=0,c; while ((c=getchar()!='\n')){ s[i]=c; i++; n++; //lunghezza della stringa } s[i]='\0'; BubbleSort_string(&s,n); // visualizzo i caratteri in ordine alfabetico for (i=0;i<n;i++){ printf(" %c ",s[i]); } return 0; } void BubbleSort_string(char **s,int n){ int i=0,flag; int temp; do { flag=0; for (i=0;i<n-1;i++){ if (*s[i]>*s[i+1]){ temp=*s[i]; *s[i]=*s[i+1]; *s[i+1]=temp; flag=1; } } } while (flag==1); }
warning: passing argument 1 of ‘BubbleSort_string’ from incompatible pointer type
*/
in Generale se voglio scambiare i caratteri di una stringa o muovere i caratteri da una posizione all'altra devo sempre utilizzare il doppio puntatore?

Rispondi quotando