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,345
    Likes Received:
    382
    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,345
    Likes Received:
    382
    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,345
    Likes Received:
    382
    Trophy Points:
    83
    Also please do use the code bb code for the code snippets you post
     

Share This Page

  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice