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:
codice:
#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);
}
/* messaggio del compilatore
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?