Cấp phát động tên sinh viên

Màu nền
Font chữ
Font size
Chiều cao dòng

//sap xep ten cap phat dong nhung sap xep theo kieu VN
#include<stdio.h>
#include<conio.h>
#include<string.h>
char t[60];
char t1[60],t2[60];
char * daoten(char *ten)
{

int a,b,c=0;
b=a=strlen(ten);

while(ten[a] !=' ') a--;
while(a<b) t[c++] = ten[++a];
strcat(t," ");
strcat (t,ten);

return t;
}

int main(){
int n,i,j;
char **ds,*tg;
char ht[50];
printf("

nhao vao so sv:");
scanf("%d",&n);
ds = new char *[n];
for(i=0;i<n;i++){
printf("

vao sv thu %d",i+1);
fflush(stdin);
gets(ht);

ds[i] = new char [50];
//ds[i] = new char [strlen(ht)]; loi o day
strcpy(ds[i],ht);

}

for(i=0;i<n-1;i++)

for(j=i+1;j<n;j++)
{

strcpy(t1,daoten(ds[i]));
strcpy(t2,daoten(ds[j]));
if(stricmp(t1,t2)>0){
tg = ds[i];
ds[i] = ds[j];
ds[j] = tg;
}

}
printf("

danh sach sap xep kieu abc

");
for(i=0;i<n;i++) puts(ds[i]);
getch();
}

code trên chạy ok khi mình khai báo ds[i] = new char [50]; nhưng nếu thay dòng này bằng ds[i] = new char [strlen(ht)]; thì báo lỗi run time khi nhập vào các sinh viên,mong các bạn chỉ dùm.
mình sửa thành ds[i] = new char [strlen(ht)+1]; thì chạy được mà ko hiểu tại sao phải xin cấp phát nhiều hơn họ tên nhập vào 1 char.

Bạn đang đọc truyện trên: Truyen2U.Net