2010-10-20 39 views
5

Tôi muốn đọc trong một chuỗi và phân tích cú pháp bằng sscanf. Mặc dù tôi không muốn đọc trong bất kỳ khoảng trống nào ngay từ đầu.sscanf bỏ qua không gian trắng ở đầu

Chuỗi mẫu.

@a Bear Tiger 

sscanf(strLine, "@%1s %64s %64s", dir, name1, name2); 

Tôi có điều đó.

Vấn đề là nếu dòng đi trong khi nói

 @a Bear Tiger 

nên là:

@a Bear Tiger 

rằng nó sẽ muốn đọc trong không gian lên đến ký tự @. Làm thế nào tôi có thể bỏ qua không gian trắng và đọc từ ký tự @.

Cảm ơn.

+0

+1 để sử dụng các số đo chiều rộng trường chính xác trong chuỗi định dạng 'scanf' của bạn. –

Trả lời

12
sscanf(strLine, " @%1s %64s %64s", dir, name1, name2); 

Điều này là cần thiết bởi vì scanf chỉ bỏ qua khoảng trống cho (hầu hết) thông số chuyển đổi. Nhưng @ là một "ký tự thông thường", không phải là đặc điểm chuyển đổi, vì vậy không có bỏ qua. Tuy nhiên, việc thêm khoảng trắng vào chuỗi định dạng sẽ buộc khoảng trắng đầu vào bị bỏ qua.

+0

+1, điều đó sẽ hoạt động. Đã tự hỏi tại sao bạn đã xóa câu trả lời. – codaddict

+0

@coda, tôi đã đoán câu trả lời của tôi cho lý do được nêu trong hai câu trả lời đã xóa. 'scanf' * không * bỏ qua khoảng trắng trong các thông số kỹ thuật. Tuy nhiên, tôi đã tìm ra sự khác biệt. –

+0

Lạ lùng, tôi nghĩ tôi đã thử điều này. Cảm ơn! – Matt

Các vấn đề liên quan