hi all, can anyone tell me where the err is :' Code: #include<stdio.h> void set(char *items[]); int main() { char *items[]={"apple","pear","banana","grape"}; set (items); return 0; } void set(char *items[]) { printf ("\t%s\n", items[2]); } this prog compiles without segmentation fault; and gives "banana " as o/p. but when i giv Code: #include<stdio.h> void set(char *items[]); int main() { char *items[10]; gets(items[2]); set (items); return 0; } void set(char *items[]) { printf ("\t%s\n", items[2]); } but when i try to gets the names : i get segementation fault; plz help
Because you are trying to access an element which you have not initialized. You just have the pointer *items but no space allocated. Use malloc to allocate a buffer and then do gets.
yeah i hav rectified that problem and it is working fine . but i was trying to solve another prob and i m getting segmentation fault: Code: #include<stdio.h> #include<stdlib.h> #include<string.h> void namesort(char *name[],int n); int main() { char *name[10]; char name1[20]; char *p; int n; int i; int len; printf("ENTER THE NUMBER OF NAMES-----> "); scanf("%d",&n); for(i=0;i<n;i++) { printf("\n enter the name:\n "); scanf("%s",&name1); len=strlen(name1); p=malloc(len+1); strcpy(p,name1); name[i]=strdup(p); } printf("%s \n ",name[1]); namesort(name,n); printf(" \n THE NAMES AFTER SORTING \n"); for(i=0;i<n;i++) { printf(" %s \n",name[i]); } printf("\n"); return 0; } void namesort(char *name[],int n) { char temp[20]; printf(" hi\n"); printf(" %s ",name[0]); int i; int j; for(i=0;i<n;i++) { for(j=0;j<(n-1);j++) printf(" %s ",name[j]); if(strcmp(name[j],name[j+1])>0) { strcpy(temp,name[j]); strcpy(name[j],name[j+1]); strcpy(name[j+1],temp); } } } i get segmenattion fault: plz help
ENTER THE NUMBER OF NAMES-----> 2 enter the name: hy enter the name: ugg ugg hi Segmentation fault this was o/p nd im using gcc compiler.
Because you are comparing if(strcmp(name[j],name[j+1])>0) the values outside the loop with the index j