1. We have moved from vBulletin to XenForo and you are viewing the site in the middle of the move. Though the functional aspect of everything is working fine, we are still working on other changes including the new design on Xenforo.
    Dismiss Notice

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

Share This Page