strcat

01/02/2016 - 17:34 von tokauf | Report spam
Hallo,

warum gibt es hier einen Speicherzugriffsfehler:

printf("Connected!");
58
59 ssize_t n1, n2;
60 while ( (n1 = write(fd, GET0, strlen(GET0))) == -1) {
61 fprintf(stderr, "write-err: %s", strerror(errno));
62 }
63
64 char buf[LEN], source[100000];
65 while ( (n2 = read(fd, buf, LEN)) > 0) {
66
67 if (n2 == -1) break;
68
69 if (n2 == 0) continue;
70
71 buf[n2] = '\0';
72 // for (uint i = 0; i < strlen(buf); i++) {
73 // source += buf[i];
74 // }
75
76 strcat(source, buf);
77 }


tk@Hamlet:~/myC++/unp/snl/tcp/server$ ./test_client www.heise.de
Connected!
Speicherzugriffsfehler (Speicherabzug geschrieben)
 

Lesen sie die antworten

#1 Rainer Weikusat
01/02/2016 - 18:02 | Warnen spam
writes:
Hallo,

warum gibt es hier einen Speicherzugriffsfehler:

printf("Connected!");
58
59 ssize_t n1, n2;
60 while ( (n1 = write(fd, GET0, strlen(GET0))) == -1) {
61 fprintf(stderr, "write-err: %s", strerror(errno));
62 }
63
64 char buf[LEN], source[100000];
65 while ( (n2 = read(fd, buf, LEN)) > 0) {
66
67 if (n2 == -1) break;
68
69 if (n2 == 0) continue;
70
71 buf[n2] = '\0';
72 // for (uint i = 0; i < strlen(buf); i++) {
73 // source += buf[i];
74 // }
75
76 strcat(source, buf);
77 }



Weil 'source' bei der ersten Iteration keinen null-terminierten String
enthaelt.

Ähnliche fragen