2011-01-05 33 views
19

Tôi có một tập tin văn bản có chứa ba dòng sau:đọc giá trị int từ một tập tin văn bản trong C

12 5 6 
4 2 
7 9 

Tôi có thể sử dụng fscanf chức năng để đọc 3 giá trị đầu tiên và lưu trữ chúng trong 3 biến. Nhưng tôi không thể đọc phần còn lại. Tôi đã thử sử dụng chức năng fseek, nhưng nó chỉ hoạt động trên các tệp nhị phân.

Vui lòng giúp tôi lưu trữ tất cả các giá trị trong các biến số nguyên.

+4

Bạn có thể nhận được câu trả lời hữu ích hơn nếu bạn gửi nỗ lực của bạn, và giải thích cách nó thất bại. – caf

+0

'fseek()' hoạt động tốt trên các tệp văn bản, nhưng không rõ vì sao bạn cần sử dụng nó để đọc dữ liệu bạn hiển thị. –

Trả lời

8

Làm thế nào về điều này?

fscanf(file,"%d %d %d %d %d %d %d",&line1_1,&line1_2, &line1_3, &line2_1, &line2_2, &line3_1, &line3_2); 

Trong trường hợp này là fscanf khớp với nhiều lần xuất hiện của bất kỳ khoảng trống nào cho đến khi tìm thấy mã thông báo tiếp theo.

+3

Có thể đáng nói rằng bạn/anh ta nên kiểm tra xem anh ta có được 7 trả về từ 'fscanf()' hay không, nếu không có điều gì đó sai. –

+0

@ Jonathan Leffler: Tốt. – MAK

35

Một giải pháp đơn giản sử dụng fscanf:

void read_ints (const char* file_name) 
{ 
    FILE* file = fopen (file_name, "r"); 
    int i = 0; 

    fscanf (file, "%d", &i);  
    while (!feof (file)) 
    { 
     printf ("%d ", i); 
     fscanf (file, "%d", &i);  
    } 
    fclose (file);   
} 
+5

Một chút thiếu trong bộ phận kiểm tra lỗi ... –

+2

@ Jonathan Leffler có, nhưng cố ý. –

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