1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

CAN U TEll me the problem

Discussion in 'C' started by ismitevijay, Aug 26, 2006.

  1. ismitevijay

    ismitevijay New Member

    Joined:
    Aug 26, 2006
    Messages:
    8
    Likes Received:
    0
    Trophy Points:
    0
    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
     
    Last edited by a moderator: Aug 26, 2006
  2. shabbir

    shabbir Administrator Staff Member

    Joined:
    Jul 12, 2004
    Messages:
    15,292
    Likes Received:
    365
    Trophy Points:
    83
    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.
     
  3. ismitevijay

    ismitevijay New Member

    Joined:
    Aug 26, 2006
    Messages:
    8
    Likes Received:
    0
    Trophy Points:
    0
    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
     
    Last edited by a moderator: Aug 26, 2006
  4. ismitevijay

    ismitevijay New Member

    Joined:
    Aug 26, 2006
    Messages:
    8
    Likes Received:
    0
    Trophy Points:
    0
    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.
     
  5. shabbir

    shabbir Administrator Staff Member

    Joined:
    Jul 12, 2004
    Messages:
    15,292
    Likes Received:
    365
    Trophy Points:
    83
    Because you are comparing if(strcmp(name[j],name[j+1])>0) the values outside the loop with the index j
     
  6. shabbir

    shabbir Administrator Staff Member

    Joined:
    Jul 12, 2004
    Messages:
    15,292
    Likes Received:
    365
    Trophy Points:
    83
    Also please do use the code bb code for the code snippets you post
     

Share This Page