Reading from socket in C giving weird output -


i'm having trouble reading socket. code i'm using below, works fine, @ other times, prints unreadable characters, or random readable ones... there better way?

    char* answer = (char*) malloc(1024);     int answerlength = 0;     char prevchar = 0;     char newchar = 0;     while (answerlength < 1024 && read(sock, &newchar, 1) > 0 ) {              if (newchar == '\n' && prevchar == '\r') {                     break;             }             printf("%d\n", answerlength);             answer[ answerlength ] = newchar;             answerlength++;              prevchar = newchar;     }     printf("%s\n", answer); 

strings in c must null-terminated, means must have symbol \0 last character.

since don't guarantee happen anywhere in code, answer may padded memory garbage next data read.

to make sure won't happen, use:

answer[answerlength] = '\0'; printf("%s\n", answer); 

also, read() whole thing straight answer, don't need pointless loop:

int len; while (len = read(sock, &answer[answerlength], 1024 - answerlength))     answerlength += len; answer[answerlength] = '\0'; printf("%s\n", answer);