Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

missing first character when printing string

# include <stdio.h>
# include <stdlib.h>
#include <string.h>
void main (void)

{
int size, i,j;
printf("enter no. of employee\n");
scanf("%d", &j);
printf("size of employee id\n");
scanf("%d",&size);
char *m[j];
for (i=0; i<j;i++) {
m[i] = (char*) malloc(size*sizeof(char));
}

for (i=0; i<j;i++) {
printf("Enter employee id of %d\n ",i+1);
getchar();
gets(m[i]);
}
printf("employee id are\n ");
for (i=0; i<j;i++){
puts(m[i]);
}
}

i made a programme that would dynamically take input from user about no. of employee and their id size then
print it however my output lack first character every time when printing and i haven’t been able to spot the error

>Solution :

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

For starters according to the C Standard the function main without parameters shall; be declared like

int main( void )

The function gets is unsafe and is not supported by the C Standard, Instead use standard C function either scanf or fgets.

As for your problem then the first character is lost due to this call

getchar();

within the for loop.

You could write instead.

while ( getchar() != '\n' );
for ( i = 0; i < j; i++ ) 
{
    printf("Enter employee id of %d\n ",i+1);
    fgets( m[i], size, stdon );
    m[i][ strcspn( m[i], "\n" ) ] = '\0';
}

And you should free all the allocated memory before exiting the program

for ( i = 0; i < j; i++ )
{
    free( m[i] );
}

Also the program will be much more safer if you will check the result if these calls of scanf

scanf("%d", &j);

and

scanf("%d",&size);

at least that the entered values are greater than 0.

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading