Tôi thiếu gì ở đây? Điều đó khiến tôi phát điên!C++: Tại sao tôi không thể in một ký tự const * với sprintf?
Tôi có một hàm trả về một const char *
const char* Notation() const
{
char s[10];
int x=5;
sprintf(s, "%d", x);
return s;
}
Bây giờ trong một phần khác của mã tôi đang làm điều này:
.....
.....
char str[50];
sprintf(str, "%s", Notation());
.....
.....
nhưng str vẫn không thay đổi.
Nếu thay vào đó tôi làm điều này:
.....
.....
char str[50];
str[0]=0;
strcat(str, Notation());
.....
.....
str được thiết lập một cách chính xác.
Tôi tự hỏi tại sao sprintf không hoạt động như mong đợi ...
Có thể một ý tưởng là thay đổi hàm thành: void Ký hiệu (char * buffer) const và làm việc trên bộ đệm char do người gọi cung cấp. – Wartin
Tại sao lại là downvote? Câu hỏi là rõ ràng, một mẫu "làm việc" đã được đưa ra, trong đó cho thấy nỗ lực, và mẫu vấn đề thực tế được đưa ra. – chris