01/10/2018, 11:57
Strcpy(s, s + 1) là gì? s + 1 trong đó có nghĩa là gì?
em không hiểu cái lệnh này là sao: strcpy(s, s + 1);
s + 1 trong đó là gì ạ.
source code đậy ạ:
'char *gets(char *s);
int puts(const char* s);
void xoaKhoangTrangTrai(char *s);
void main(int argc, char* argv[]){
char *s[31];
gets(s);
xoaKhoangTrangTrai(s);
puts(s);
}
void xoaKhoangTrangTrai(char *s){
while(s[0] == ' ')
strcpy(s, s + 1);
}
'
Bài liên quan
http://www.cplusplus.com/reference/cstring/strcpy/
Bạn chịu khó đọc hướng dẫn về hàm có sẵn của c++ trên google rất nhiều, tiếng anh và tiếng việt đều có.
Hàm này thực chất là copy giá trị ở tham số thứ 2, bỏ vào tham số thứ nhất. Hay nói cách khác là xóa ký tự đầu tiên của s thôi mà.
Cái tên nói lên tất cả mà. Hàm
strcpy()
dùng để sao chép chuỗi:char * strcpy ( char * destination, const char * source );
.ý của mình ko phải vậy ý mình là s + 1 là chuỗi gì vậy. s+1 thật sự có ý nghĩa là gì, mình chỉ khai báo s vậy s + 1 là sao?
Mình hiểu câu hỏi của bạn, nhưng để mình trả lời chính xác được cũng khá là khó. Nếu mình sai thì mọi người vào sửa giúp mình nhé.
Trong
strcpy(s, s+1)
,s
(hays + 0
) là iterator (phần tử) thứ 0 của s,s + 1
là iterator thứ 1 của s.Cả dòng này có nghĩa là lấy ra đoạn con từ iterator thứ 0 đến trước iterator thứ 1 của s.
nếu mình cho nó vào vòng lặp thì nó có tăng lên là phần tử thứ 2 thư 3 thứ ++ ko bạn
Không nên viết câu này vì dễ bị tổ trác.
cho mình hỏi tổ trác là sao ạ ?
Vì
strcpy
không đảm bảo cho trường hợp chép đè lên chính chuỗi đó.