01/10/2018, 15:36
Con trỏ trong string
Code dưới này mình muốn gán *x = x[1] nhưng chạy thì bị stop working.
Nếu vô hiệu hóa dòng code đó thì nó chạy được, in ra ok, mà in xong thì cmd bị đơ khoảng 3s, như bị tràn ấy
Mn giải thích hộ mình với. Cám ơn
#include <stdio.h>
#include <string.h>
#include <conio.h>
int main()
{
int i, n;
char *x = "helloWorld";
n = strlen(x);
*x = x[1];
for (i = 0; i < n; i++)
{
printf("%s ", x);
x++;
}
printf("
");
delete x;
_getch();
return 0;
}
Bài liên quan
Bạn nhớ nhé, tất cả các string literal (như cái “helloWorld”) đều được đưa vào section .rdata trong executable file. Vùng này được đặt cờ “read only”.
Bạn viết:
Chạy đến đây, hệ điều hành ném Access Violation Exception (vì bạn ghi dữ liệu vào vùng read only)
Và:
Cũng thế luôn.