30/09/2018, 17:09
[Hỏi] Hàm để tách chuỗi
Em đang làm thử hàm, trong đó, hàm này sẽ cắt 1 chuỗi bắt đầu từ vị trí pos
mà mình nhập vào cho đến hết chuỗi lớn.
Sau đó gán chuỗi mới đó (em tạm gọi là subString
).
Đây là code của em:
char* cut(char* str, int pos, char* subStr)
{
char word;
int index = 0;
do{
word = str[pos];
subStr[index] = word;
pos++; index++;
}while(word != ' ');
str[pos] = ' ';
// return str;
}
int main()
{
int time, pos = 5;
char str[] = "Hello World";
char subStr[] = "";
cut(str, pos, subStr);
std::cout << str << std::endl << subStr << std::endl;
return 0;
}
Với vị trí 5, em muốn chuỗi chính sẽ bị cắt ra, thì output sẽ là:
str: "Hello"
subStr: " World"
Thế nhưng kết quả lại ra:
str: "World"
subStr: " World"
Sau khi debug thì em thấy ở cái dòng
subStr[index] = word;
Nó sẽ thay đổi luôn cả 2 chuỗi.
Có cách nào khắc phục cái này không ạ ?
Bài liên quan
Try this
bị mất 1 ký tự rồi…
@nhatlonggunz thử này xem. biến pos của em đã bị cộng dồn lên rồi.
update : code không có lỗi nhưng có lẽ không khai báo kích thước nên đè bộ nhớ lên nhau
Dạ cám ơn anh nhiều !!!
Mà mọi người cho em hỏi, tại sao lại có tình trạng như trên ạ ? Khi em gán
subStr[index] = word
ấy.Mục đích của em là làm cái hàm tựa tựa
strcpy
ấy anh @GioHic, có ai giải thích hộ em tại sao code của em gặp tình trạng trên không :’(
@ltd @Gio
subStr
cần thiết để chứaKiểm tra
khi đó độ dài của xâu subStr nếu thiếu thì sẽ tràn sang bộ nhớ của str.
pos
ban đầu