Đặc điểm kỹ thuật cho strtol
phân chia khái niệm chuỗi đầu vào thành "khoảng trắng ban đầu", "chuỗi chủ đề" và "chuỗi cuối cùng" và xác định "chuỗi chủ đề" là:Ngôn ngữ khó hiểu trong đặc điểm kỹ thuật của strtol, et al
chuỗi dài nhất ban đầu của chuỗi đầu vào, bắt đầu bằng ký tự không-khoảng trắng đầu tiên có dạng mong muốn. Chuỗi chủ đề không chứa ký tự nếu chuỗi đầu vào trống hoặc chứa toàn bộ các ký tự khoảng trống hoặc nếu ký tự dấu cách trắng đầu tiên không phải là ký hiệu hoặc chữ cái hoặc chữ số được phép.
Tại một thời gian tôi nghĩ rằng "dài nhất dãy ban đầu" kinh doanh là tương tự như cách scanf
công trình, nơi "[email protected]"
sẽ quét như "0x"
, một trận đấu thất bại, tiếp theo là "@"
như nhân vật chưa đọc tiếp theo. Tuy nhiên, sau một số cuộc thảo luận, tôi chủ yếu tin rằng strtol
xử lý chuỗi dài nhất ban đầu có dạng mong đợi, không phải là chuỗi ban đầu dài nhất là chuỗi ban đầu của một số chuỗi có thể có của biểu mẫu dự kiến.
gì vẫn khó hiểu tôi là ngôn ngữ này trong đặc tả:
Nếu chuỗi chủ đề là rỗng hoặc không có các hình thức dự đoán, không có chuyển đổi được thực hiện; giá trị của str được lưu trữ trong đối tượng được trỏ tới bởi endptr, miễn là endptr không phải là một con trỏ null.
Nếu chúng tôi chấp nhận định nghĩa chính xác của "chuỗi chủ đề", không có thứ gì như chuỗi chủ đề không trống không có dạng mong muốn, thay vào đó (để tránh sự thừa và nhầm lẫn) văn bản chỉ nên đọc:
Nếu chuỗi chủ đề trống, không có chuyển đổi nào được thực hiện; giá trị của str được lưu trữ trong đối tượng được trỏ tới bởi endptr, miễn là endptr không phải là một con trỏ null.
Có ai có thể làm rõ những vấn đề này cho tôi không? Có lẽ một liên kết đến các cuộc thảo luận trong quá khứ hoặc bất kỳ báo cáo lỗi nào có liên quan sẽ hữu ích.
Và một ví dụ tiêu chuẩn đơn giản sẽ xóa mọi thứ ... –
Thật vậy. Tôi có một cảm giác về những vấn đề như thế này, ủy ban đã thực sự cố gắng tránh được rõ ràng vì sợ mở một cuộc tranh cãi về cách nó sẽ hoạt động ... –