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

Help with a program

Discussion in 'C' started by lionaneesh, Mar 24, 2010.

  1. lionaneesh

    lionaneesh New Member

    Code:
    #include<stdio.h>
    #include<string.h>
    
    int main()
    {
    
        int i;
        char line[100];
        char line2[100];
        
    
        printf("Enter some lines : ");
        scanf("%[^\n]",line);
        printf("2:");
        scanf("%[^\n]",line2);
    
        if((i = strlen(line)) >= 80)
        {
            printf("%s",line);
        }
        if(strlen(line2) >= 80)
        {
            printf("%s",line2);
        }
        getchar();
        return(0);
    }
    the main aim of making this program is that it will input 2 lines and output only that line that is 80 or more in length.

    errors :-
    1. There is no compile error.
    2. the second scanf(); function does not inputs.
    3. No printf funtion occurs.

    help me run this program successfully.

    thanks in advance.
     
  2. karthigayan

    karthigayan New Member

    The problem happen by the '\n' of the line.Since it gets the input till the newline the entered '\n' will remain in the buffer .

    That '\n' will come as a input for the line2.It too get the input till the '\n' . So it comes out immediately . So you need to clear the '\n'.You can do this by getchar().

    Code:
    #include<stdio.h>
    #include<string.h>
    
    int main()
    {
    
        int i;
        char line[100];
        char line2[100];
    
    
        printf("Enter some lines : ");
        scanf("%[^\n]",line);
        printf("2:");
        getchar(); // Will get the "\n" in the buffer
        scanf("%[^\n]",line2);
    
        if((i = strlen(line)) >= 80)
        {
            printf("%s",line);
        }
        if(strlen(line2) >= 80)
        {
            printf("%s",line2);
        }
        getchar();
        return(0);
    }
    
    But always don't use
    Code:
    scanf("%[^\n]",line2);
    
    Because it will cause the buffer overflow some times . Instead use fgets .
     
    Last edited: Mar 24, 2010

Share This Page