Mọi người có thể cho mình biết tại sao lại có lỗi runtime trong đoạn này được không.
Đề bài, bài này là mình loại bỏ các dấu cách thừa giữa, cuối và đầu từ.
Đây là cả file và mình đã đoán được nó làm ở đoạn này :
cả file
#include <stdio.h>
#define MAX 101
#include <string.h>
typedef struct sv{
char hovaten[53];
}sinhvien;
char *chuan_hoa(char s[]) {
int i ;
for( i = 0 ; i < strlen(s); i++) {
s[i] = toupper(s[i]);
}
while (s[0] == ' ') strcpy(&s[0], &s[1]);
for(i = 0 ; i < strlen(s) - 1; i++) {
if(s[i] == ' ' && s[i+1] == ' ') {
strcpy(&s[i], &s[i+1]);
i--;
}
}
while (s[strlen(s)-1] == ' ') {
strcpy(&s[strlen(s)-1], &s[strlen(s)]);
}
return s;
}
int main() {
int i, n;
sinhvien sv[MAX];
scanf("%d",&n);
for( i = 0 ; i < n ; i++) {
fflush(stdin);
gets(sv[i].hovaten);
}
for(i = 0 ; i < n - 1 ; i++) {
strcpy(sv[i].hovaten,chuan_hoa(sv[i].hovaten));
printf("%s:%d\n",sv[i].hovaten,strlen(sv[i].hovaten));
}
strcpy(sv[n - 1].hovaten,chuan_hoa(sv[n - 1].hovaten));
printf("%s:%d",sv[n - 1].hovaten,strlen(sv[n - 1].hovaten));
return 0;
}
Đoạn bị lỗi runtime
for(i = 0 ; i < strlen(s) - 1; i++) {
if(s[i] == ' ' && s[i+1] == ' ') {
strcpy(&s[i], &s[i+1]);
i--;
}
}
Cám ơn mọi người.


83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?