Tôi có một hàm trả về một chuỗi:C: Quay trở lại chuỗi từ chức năng
const *char getMyPassword()
{
return "mysecretpassword";
}
Vâng, nó đã làm việc một cách hoàn hảo, nhưng tôi phát hiện ra rằng nếu tôi sẽ chạy "dây" trên các hệ thống Unix nó xuất hiện trong danh sách .. không tốt.
Cách dễ nhất có thể để thay thế nó là gì? Hàm nằm trong thư viện và tôi muốn giữ nó linh hoạt. Bây giờ tôi bắt đầu mallocing trong hàm và chuỗi trong chuỗi biến mất. Tuy nhiên, khi nào tôi sẽ giải phóng nó một lần nữa?
char * getMyPassword()
{
unsigned char arr[] = { 'p', 'a', 's', 's', 'w', 'o', 'r' , 'd', '\0' };
char *return_arr = malloc(sizeof(arr));
strcpy(return_arr, arr);
return return_arr;
}
Nếu tôi định vuốt trước và vượt qua con trỏ, thì làm sao tôi biết kích thước trước khi kích thước mật khẩu chỉ được biết trong hàm?
Là một kế hoạch B tôi có thể vượt qua một mảng lớn, nhưng điều đó có vẻ không phải là rất thanh lịch. Làm thế nào tôi nên tiếp cận điều này?
EDIT: Tôi đã thêm strcpy (return_arr, arr). Tôi thực sự đã có nó trong mã ban đầu, nhưng quên nó ở đây.
Đặt trong đó lùi, sau đó sử dụng '' 'strrev()' ''. Hoặc, rot-13 nó hai lần. –
Nếu bạn định sử dụng mật khẩu, tôi khuyên bạn nên sử dụng mật khẩu được băm thay vì chuỗi chữ. Điều đó chắc chắn sẽ làm giảm lượng thông tin mà ai đó có thể có được bằng cách chạy 'chuỗi' trên chương trình. Bạn có thể tùy chỉnh hàm băm để mọi người không thể (hoặc ít nhất là khó khăn hơn nhiều) xác định giá trị thực sự là gì. – dbeer
Để sử dụng mật khẩu nào?Đăng nhập ở đâu đó hoặc như vậy? –