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
subStrcầ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.
posban đầu