Go4Expert

Go4Expert (http://www.go4expert.com/)
-   C (http://www.go4expert.com/forums/c/)
-   -   Help with a program (http://www.go4expert.com/forums/help-program-t21495/)

lionaneesh 24Mar2010 14:11

Help with a program
 
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.

karthigayan 24Mar2010 15:11

Re: Help with a program
 
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 .


All times are GMT +5.5. The time now is 12:44.