30/09/2018, 23:02
Hỏi về hàm reset chuỗi
Chào mọi người.
Không biết có ai biết về hàm reset chuỗi không chỉ cho mình với, bên C/C++.
VD: char *a = "Hoc Lap Trinh"
, bây giờ em muốn reset chuỗi a này thành chuỗi rỗng (null) thì không biết có hàm nào hỗ trợ việc này không nhỉ mọi người ?
Xin cảm ơn !
Bài liên quan
This post was flagged by the community and is temporarily hidden.
Vậy giả sử như thế này thì sao anh?
char str[50] = "Hoc Lap Trinh"
Lúc đó reset bằng mấy kiểu kia nó báo lỗi ?
This post was flagged by the community and is temporarily hidden.
À quên, nếu thế thì không cần cần reset chuỗi cũng được !
OK anh
Đầu tiên em phải chú ý là em muốn cả chuỗi bằng null hay reset value từng vị trí bằng 0. trong C null không hẳn là 0. null là dành cho pointer
Thuật ngữ nitpick:
Chuỗi không thể set to null, 1 chuỗi trong C là 1 mảng các ký tự mà ở đâu có có 1 ký tự null. Nếu không có ký tự null nó không thể passed to functions expecting (pointers to) strings (nghĩa là không thể trỏ tới). Trong C only object can be null. Đừng nhầm lẫn NULL macro với NUL character
Thứ 2. Là nơi là em khai báo chuỗi. Nếu là 1 biến global hoặc static thì giá trị của nó sẽ được khỏi tạo là 0 theo mặc định. Còn nếu là biến địa phương có thể dùng như này để set first value
Hoặc dùng memset(char *a, value t, size of a);
Tiếp tục thảo luận về Topic này !
Đề bài: Viết hàm tìm từ có độ dài lớn nhất trong chuỗi cho trước, in ra màn hình từ đó + độ dài tương ứng.
Source code:
Tuy code em đã tìm ra được từ có độ dài lớn nhất trong chuỗi và in ra màn hình ok nhưng lúc in ra, cái chuỗi được in có thêm ký tự lạ, anh @Phong_Ky_Vo và @qtd với mọi người xem giúp em ạ.
Xin cảm ơn !
This post was flagged by the community and is temporarily hidden.
This post was flagged by the community and is temporarily hidden.
Cũng không hẳn. Nếu thuật toán có vẫn để thì nó sẽ không thể in ra được cái từ có độ dài lớn nhất + độ dài của nó được.
Còn đằng này, nó vẫn in ra bình thường nhưng có điều là kèm theo ký tự rác.
Em nghi là chuỗi
str
lúc xử lý xong nó không bị “chặn” ở 1 ví trị kết thúc nên mới in ra 1 đống ký tự rác đằng sau (có thể)This post was flagged by the community and is temporarily hidden.
Đã tìm được được lỗi, lỗi là không để ký tự kết thúc chuỗi.
sau line
str = strdup(lngstr);
phải thêmstr[Dem] = '\0'
nữa mới được (lỗi ngớ ngẫn quá).Xin cảm ơn mọi người đã nhiệt tình giúp đỡ nhé
strdup ko phải là hàm chuẩn.
C thì xài sscanf, C++ thì xài stringstream mà bóc tách từng từ ra. Duyệt vòng for làm gì.
OK anh Em mới qua học chuỗi nên từ từ rồi nuốt, không ói ra phải nuốt lại mệt lắm !
Thanks anh
Xong trận LOL đã =))
Ừ, chỗ đó viết không đủ. Viết vậy dễ bị nhầm giữa trị ‘\0’-0 và ‘0’-48 mặc dù kết quả như nhau. Thế này mới đủ.