Mình có đoạn code đơn giản như thế này

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
void main()
{
char *s;
int x=100;// gan bien x, su dung bien x de cap phat o nho cho chuoi
s = (char*)malloc(x);
printf("
Nhap vao chuoi : ");
gets(s);
printf("
Do dai chuoi vua nhap : %d",strlen(s));
getch();
}
đoạn code chạy bình thường và không có lỗi...Tuy nhiên, khi sửa đoạn code lại theo cách này, với mục đích nhập vào biến x để cấp cấp phát ô nhớ cho chuỗi s..
Mã:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
void main()
{
	char *s;
	int x;
// nhap bien x đe cap phat o nho cho chuoi s
	printf("
 Nhap so o nho' cap' : x = ");
	scanf("%d",&x);
	printf("
 x = %d",x);
	s = (char*)malloc(x);
	printf("
 Nhap vao chuoi : ");
	gets(s);
	printf("
 Do dai chuoi vua nhap : %d",strlen(s));
	getch();
}
Chương trình vẫn chạy được nhưng cho ra kết quả sai, mình tìm hoài mà không biết sai vì đâu, nhờ các bạn có kinh nghiệm hơn giúp đỡ.
Mình xin chân thành cám ơn...

- - - Nội dung đã được cập nhật ngày 19-07-2014 lúc 09:50 PM - - -

À, mình đã tìm ra, đó là lỗi vùng đệm....