Help with a program

lionaneesh's Avatar, Join Date: Mar 2010
Invasive contributor
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.
0
karthigayan's Avatar, Join Date: Feb 2010
Go4Expert 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 by karthigayan; 24Mar2010 at 15:16..