Tôi đã cố gắng tìm kiếm lý do tại sao mã sau bị lỗi và tôi không thể tìm thấy mã. Vì vậy, xin vui lòng, xin lỗi sự thiếu hiểu biết của tôi và cho tôi biết những gì đang xảy ra ở đây.Char * p và scanf
#include<stdio.h>
int main(void){
char* p="Hi, this is not going to work";
scanf("%s",p);
return 0;
}
Theo như tôi đã hiểu, tôi đã tạo con trỏ tới vùng tiếp giáp trong bộ nhớ có kích thước 29 + 1 (cho \ 0). Tại sao tôi không thể sử dụng scanf để thay đổi nội dung đó?
P.S Vui lòng sửa tôi Nếu tôi nói gì đó sai về char *.
Nếu đó là trường hợp, sau đó làm thế nào để đọc một chuỗi có chiều dài không xác định? – Fingolfin
@Adel, chỉnh sửa nhỏ, nhìn dòng cuối cùng – Muggen
Thật tuyệt, cảm ơn! Nhưng, phải làm gì nếu tôi không thể dự đoán độ dài của chuỗi được quét? – Fingolfin