Tôi cần phải tìm nếu mảng char bắt đầu bằng "ADD". Tôi biết sử dụng strcmp(), nhưng tôi không biết làm thế nào để có được ba ký tự đầu tiên. Tôi thực sự ghét làm việc với c-strings. Làm thế nào tôi có thể lấy một lát của một mảng char như char buffer[1024]?
Làm thế nào tôi có thể cắt một chuỗi trong C?
8
A
Trả lời
9
Sử dụng strncmp("ADD", buffer, 3)
.
Tôi không chắc chắn ý bạn là gì bởi "lát" nhưng bất kỳ con trỏ nào bên trong buffer
đều có thể được coi là một lát. Ví dụ: nếu buffer
là một chuỗi bắt đầu bằng "ADD"
thì char *slice = buffer + 3
là cùng một chuỗi với "ADD"
bị xóa. Lưu ý rằng slice
sau đó là một phần của buffer
và sửa đổi nội dung của slice
sẽ sửa đổi nội dung của buffer
. Và cách khác vòng.
Nếu bằng "lát" bạn có nghĩa là một bản sao độc lập thì bạn phải cấp phát một khối bộ nhớ mới và sao chép các phần thú vị từ buffer
vào bộ nhớ của bạn. Các chức năng thư viện strdup
và strndup
rất tiện lợi cho việc này.
8
Sử dụng strncmp .Assuming đệm là biến để kiểm tra, chỉ
strncmp (buffer,"ADD",3);
Các vấn đề liên quan
- 1. Làm thế nào tôi có thể nhận được các bit từ một chuỗi trong C#?
- 2. Làm thế nào tôi có thể đọc một chuỗi ký tự có dấu cách trong C?
- 3. Làm thế nào tôi có thể cắt bớt một datetime trong SQL Server?
- 4. Làm thế nào tôi có thể cắt không gian màu trắng từ một biến trong awk?
- 5. Làm thế nào tôi có thể cắt một hình dạng bên trong hình dạng khác?
- 6. Làm thế nào tôi có thể viết một dòng mới trong một chuỗi trong Coldfusion?
- 7. Làm thế nào để cắt một NSArray trong Objective-C?
- 8. Làm thế nào để cắt chuỗi StringBuilder?
- 9. C#: Làm thế nào tôi có thể nhận được thời gian hiện tại thành một chuỗi?
- 10. Làm thế nào tôi có thể chia chuỗi chỉ một lần sử dụng C#
- 11. Làm thế nào tôi có thể làm chuỗi nối, hoặc thay thế chuỗi trong YAML?
- 12. Làm thế nào để cắt ngắn một chuỗi với độ dài cụ thể trong perl?
- 13. Trong Perl, làm thế nào tôi có thể gọi một phương thức có tên tôi có trong một chuỗi?
- 14. Làm thế nào tôi có thể có được một stacktrace từ C + + trong WinRT?
- 15. Làm thế nào tôi có thể làm tròn một phao?
- 16. Làm thế nào tôi có thể thay thế chuỗi trong một bản ghi nhớ (FastReport)?
- 17. Làm thế nào tôi có thể tách một chuỗi theo dấu phân cách trong Qt?
- 18. Làm thế nào tôi có thể deserialize một chuỗi JSON trong Mono?
- 19. Trong mercurial làm thế nào tôi có thể tìm thấy changesets có chứa một chuỗi?
- 20. Làm thế nào tôi có thể trả về một giá trị từ một chuỗi trong Ruby?
- 21. Làm thế nào tôi có thể chuyển đổi một chuỗi thành một float trong mysql?
- 22. Làm thế nào tôi có thể chuyển đổi một hastable thành một chuỗi json trong PowerShell?
- 23. trong OpenMP, làm thế nào tôi có thể làm cho mỗi lõi đơn chạy một chuỗi?
- 24. Trong C# làm thế nào tôi có thể chuẩn bị một chuỗi có giá trị cho tên thư mục windows
- 25. Làm thế nào tôi có thể lưu trữ một chuỗi trong một cột varbinary (max) bằng cách sử dụng C#
- 26. Làm thế nào tôi có thể tải toàn bộ một tập tin vào một chuỗi trong C
- 27. Tôi có thể "nhân" một chuỗi (trong C#) không?
- 28. Làm thế nào để cắt ngắn chuỗi UTF8 trong PHP?
- 29. Làm thế nào tôi có thể mô phỏng một liên minh C++ trong C#?
- 30. Làm thế nào tôi có thể nối một chuỗi trong vòng lặp trong JSTL/JSP?
Làm thế nào người ta có thể chỉ định một bù đắp và chấm dứt đó là ngắn hơn chuỗi char ban đầu? Giống như "hello" + 1 size 3 (do đó "ell"); Đó là những gì có nghĩa là bởi lát tôi tin. May mắn strncmp và printf cung cấp các tùy chọn để làm việc với điều này, nhưng nó sẽ được gọn gàng để hiển thị này như là một chuỗi char – scape
@scape Xem [Làm thế nào để trích xuất một chuỗi con từ một chuỗi trong C?] (Https://stackoverflow.com/questions/19555434) – kmkaplan
"strtok thường thay thế các dấu phân tách bằng '\ 0' vì nó" ăn "đầu vào." mà rõ ràng có một số nhược điểm. – scape