Hỏi hàm để tách chuỗi

     

Em đang làm thử hàm, trong đó, hàm này sẽ giảm 1 chuỗi bắt đầu từ vị trí pos cơ mà mình nhập vào cho tới hết chuỗi lớn.Sau đó gán chuỗi bắt đầu đó (em tạm hotline là subString).Đây là code của em:

char* cut(char* str, int pos, char* subStr) char word; int index = 0; do word = str; subStr = word; pos++; index++; while(word != ""); str = ""; // return str;int main(){ int time, pos = 5; char str<> = "Hello World"; char subStr<> = ""; cut(str, pos, subStr); std::cout Với địa điểm 5, em hy vọng chuỗi chính sẽ bị cắt ra, thì output đã là:

str: "Hello"subStr: " World"Thế nhưng hiệu quả lại ra:

str: "World"subStr: " World"Sau lúc debug thì em thấy ở mẫu dòng

subStr = word;Nó sẽ biến đổi luôn cả 2 chuỗi.

Bạn đang xem: Hỏi hàm để tách chuỗi

Có giải pháp nào khắc chế cái này không ạ ?


nguyenchiemminhvu (NCMV) May 17, 2015, 6:02am #2

Try this

#include using namespace std;char* substring(char* s,int pos) char* t = &s; s = ""; return t;int main() { char s<50> = "hello world"; char* t = substring(s,6); cout
2 Likes
Rok_Hoang (Minh Hoàng) May 17, 2015, 7:01am #3
bị mất 1 ký kết tự rồi…


nhatlonggunz thử này xem. Trở thành pos của em đã bị cộng dồn lên rồi.

Xem thêm: Khóa Học Làm Bánh {Cơ Bản ⇒ Chuyên Gia}, Học Làm Bánh {Cơ Bản ⇒ Chuyên Gia}

#include using namespace std;void cut(char *str, int pos, char *subStr)char word;int index = 0;int index2 =pos;doword = str;subStr = word;index2++; index++;while(word != NULL);str = 0;int main(){int time, pos = 5;char str<> = "Hello World";char subStr<>="";cut(str, pos, subStr);std::cout
2 Likes
Gio (Gió) May 17, 2015, 7:37am #4
update : code không tồn tại lỗi nhưng có lẽ rằng không khai báo kích thước nên đè bộ nhớ lưu trữ lên nhau

*

khai báo kích thước subStr trường hợp không sẽ bị lỗi
*
Đơn giản hơn

void subString(char *str, int pos, char* subStr) strcpy(subStr,str+pos); str=0;
2 Likes
nhatlonggunz (nhatlonggunz) May 18, 2015, 5:07am #5
Dạ cám ơn anh những !!!

Mà mọi fan cho em hỏi, lý do lại có tình trạng như bên trên ạ ? lúc em gán subStr = word ấy.

Xem thêm: Cờ Lê Đa Năng 48 Trong 1 - Cờ Lê Đa Năng 8 Đầu Xoay 48 Chức Năng

Mục đích của em là làm cái hàm tựa tựa strcpy ấy anh
Gio

Hic, gồm ai giải thích hộ em vì sao code của em gặp gỡ tình trạng trên ko :’(
ltd
Gio


Gio (Gió) May 18, 2015, 5:16am #6
trước tiên là không khai báo bộ lưu trữ cho subStr quan trọng để chứaKiểm tra

cout 1khi kia độ lâu năm của xâu subStr nếu như thiếu thì đang tràn sang bộ lưu trữ của str.

Thứ nhị là trường hợp khai báo đủ bộ nhớ lưu trữ thì thuật toán bị sai: vì lúc đó pos vẫn chỉ mang đến cuối chuỗi, thay bởi 1 biến hóa khác lưu địa chỉ của pos lúc đầu
4 Likes
trang chủ Categories FAQ/Guidelines Terms of Service Privacy Policy

Powered by Discourse, best viewed with JavaScript enabled