Chuỗi xóa khoảng trắng

em mới học về chuỗi mọi người cho em hỏi là cái đoạn code này nó nghĩa là như thế nào ạ em cảm ơn ạ

while(c!=NULL)
 { int t=strlen(s)-strlen(c);
 for(int i=t;i<strlen(s);i++) 
s[i]=s[i+1]; c=strstr(s,"  ");
 }

À, nghĩa nó là Xóa khoảng trắng dư (>=2) của chuỗi. Đó là tiêu đề của bạn mà.


Muốn giải thích phải không?
Ít nhất thì bạn cũng nên tìm hiểu chức năng từng hàm.
Giải thích cơ bản là vầy:

  • Tìm vị trí có 2 khoảng trắng (c=strstr(s," ");).
  • Dịch các kí tự ngược lại 1 đơn vị s[i]=s[i+1]; (nhằm ghi đè lên khoảng trắng dư kia).
  • Cứ lặp lại cho đến khi không còn chỗ nào có 2 khoảng trắng while(c!=NULL) (chuẩn 1 dấu cách).
2 Likes

dạ em cảm ơn anh cho em hỏi chút là dòng t=strlen(s)-strlen©;
có tác dụng gì vậy ạ

Có nghĩa là bắt đầu dịch các kí tự từ vị trí t của chuỗi. Vị trí đó chính là vị trí của cái khoảng trắng dư đấy.

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