ik zit met het volgende probleem:
ik wil een programma in C maken (onder linux) waarin de gebruiker een bericht kan intypen.
dit bericht zal later in het programma naar een server gestuurd worden.
hiervoor heb ik de volgende code geschreven:
als ik het programma run:
hmm, hier gaat dus iets fout. als ik dit in mijn code verander:
krijg ik de volgende output:
het lijkt er dus op dat hij bij
for (i = 0; body[i] != NULL; i++)
nooit bij een string komt die NULL is, heeft iemand misschien een idee wat ik kan doen?
ik wil een programma in C maken (onder linux) waarin de gebruiker een bericht kan intypen.
dit bericht zal later in het programma naar een server gestuurd worden.
hiervoor heb ik de volgende code geschreven:
code:
1
2
3
4
5
6
7
8
9
10
11
12
| ...
int i, socket;
char body[500][500];
printf("please enter your message(end with a \".\"):\n\n");
for (i = 0; strncmp(body[i - 1], ".", 1) != 0; i++)
fgets(body[i], 500, stdin);
printf("\nok, saved you message.\n\n");...
printf("sending message...\n");
for (i = 0; body[i] != NULL; i++)
write(socket, body[i], strlen(body[i]));
printf("done!\n");
... |
als ik het programma run:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| [sanchez@vncsmind coding]$ ./test please enter your message(end with a \".\"): blaat blaater blaatst buh . ok, saved you message. sending message... Segmentation fault [sanchez@vncsmind coding]$ |
hmm, hier gaat dus iets fout. als ik dit in mijn code verander:
code:
1
2
3
4
5
6
| ...
printf("sending message...\n");
for (i = 0; body[i] != NULL; i++) {
write(socket, body[i], strlen(body[i]));
printf("++ %d\n" i + 1);
printf("done!\n");... |
krijg ik de volgende output:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| [sanchez@vncsmind coding]$ ./test ... ok, saved you message. sending message... ++ 1 ++ 2 ++ 3 ++ 4 ++ 5 ++ 6 ... ++ 505 ++ 506 ++ 507 Segmentation fault [sanchez@vncsmind coding]$ |
het lijkt er dus op dat hij bij
for (i = 0; body[i] != NULL; i++)
nooit bij een string komt die NULL is, heeft iemand misschien een idee wat ik kan doen?