여기 내 코드입니다 :왜 char 포인터가 자동으로 지워지나요?
tmpip = get_public_ip();
pubip = strtok(tmpip, "\n");
sprintf(buffer, "220 FTPUtils Server [%s]", pubip);
len_string = strlen(buffer)+1;
if(send(newsockd, &len_string, sizeof(len_string), 0) < 0){
perror("Errore invio len buffer");
onexit(newsockd, sockd, 0, 2);
}
if(send(newsockd, buffer, len_string, 0) < 0){
perror("Errore durante l'invio");
onexit(newsockd, sockd, 0, 2);
}
pubip = NULL;
free(tmpip);
memset(buffer, 0, sizeof(buffer));
if(recv(newsockd, &len_string, sizeof(len_string), MSG_WAITALL) < 0){
perror("Errore ricezione len user buffer");
onexit(newsockd, sockd, 0, 2);
}
if(recv(newsockd, buffer, len_string, 0) < 0){
perror("Errore ricezione del nome utente");
onexit(newsockd, sockd, 0, 2);
}
user_string = strtok(buffer, " ");
username = strtok(NULL, "\n");
fprintf(stdout, "%s %s\n", user_string, username);
sprintf(saved_user, "%s", username);
memset(buffer, 0, sizeof(buffer));
if(recv(newsockd, &len_string, sizeof(len_string), MSG_WAITALL) < 0){
perror("Errore ricezione len pass buffer");
onexit(newsockd, sockd, 0, 2);
}
if(recv(newsockd, buffer, len_string, 0) < 0){
perror("Errore ricezione password");
onexit(newsockd, sockd, 0, 2);
}
pass_string = strtok(buffer, " ");
password = strtok(NULL, "\n");
fprintf(stdout, "%s %s\n", pass_string, password);
memset(buffer, 0, sizeof(buffer));
printf("%s %s\n", username, password);
내가 마지막 디버그 printf
에 문제가 : 그것은 아무것도를 표준 출력 없음 인쇄!
왜 내 포인터 (사용자 이름 및 암호)가 삭제 되었습니까?
그것은 이상한 때문에 완벽하게 2 fprintf
작동하지만 마지막 printf
아니 ...
'memset'은 전체'buffer'를 제로화했기 때문에'username'과'password'는'buffer' 내부의 특정 바이트를 가리 킵니다. – DCoder
당신은 맞습니다. XD 일어나십시오 polslinux가 깨어납니다 : D – polslinux
이 오류가 있습니까? printf ("% s % s \ n", 사용자 이름, 비밀번호); –