c - strange behavior in character string and pipe -


i have program:

    int main()     {       int* p_fd = (int*)malloc(2*sizeof(int));       char buf[100];       pipe(p_fd);       write(p_fd[1],"hello", strlen("hello"));       int n;       n = read(p_fd[0],buf,100);       //printf("n is: %d\n",n);                // line important!       buf[n]="\0";                             // line triggers warning。       printf("%s\n",buf);     } 

when comiple file, warning:

[esolve@kitty temp]$ gcc -o temp temp.c temp.c: in function ‘main’: temp.c:38:9: warning: assignment makes integer pointer without cast [enabled default] 

and without line printf("n is: %d\n",n); result :

[esolve@kitty temp]$ ./temp  hellon 

with line, expected result:

    [esolve@kitty temp$ ./temp     n is: 5     hello 

why line important? thanks!

buf[n]="\0"; 

should be

buf[n]='\0'; 

"\0" pointer string literal buf char array. that's why warning assigning pointer integer.

you should assign char element of buf. presume wanted add null terminator array; '\0' char value 0 provides this.


Comments

Popular posts from this blog

SPSS keyboard combination alters encoding -

Add new record to the table by click on the button in Microsoft Access -

javascript - jQuery .height() return 0 when visible but non-0 when hidden -