Vì em không rõ lỗi chính xác có nằm ở việc cấp phát bộ nhớ con trỏ hay không nên em để tiêu đề chung chung, mong mọi người có thể giải đáp thắc mắc này, em có đoạn code sau :
Code:
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char *buffer = "demo%20bai tap";
char tempCode[3] = {0};
int j;
for(int i = 0;i< strlen(buffer);i++)
{
if(buffer[i] == '%')
{
tempCode[0] = buffer[i+1];
tempCode[1] = buffer[i+2];
buffer[i] = strtol(tempCode,NULL,16);
j = i +1;
do
{
buffer[j] = buffer[j+2];
}while(buffer[2+(j++)]);
}
}
printf("\n %s \n",buffer);
getch();
return 0;
}
trong đoạn code trên nếu thay khai báo char *buffer = "demo%20bai tap"; thành char buffer[20] = "demo%20bai tap"; thì chương trình lại chạy bình thường, về mặt bản chất cả 2 khai báo trên là tương đương nhau vậy tại sao cách khai báo thứ nhất lại bị lỗi và lỗi xuất hiện tại dòng code sau
Code:
buffer[i] = strtol(tempCode,NULL,16);