簡體   English   中英

如何使用Linux系統調用read()控制文件的數據內容?

[英]How to control the data content of a file using the Linux system call read()?

我有一個用換行符分隔的整數文件,例如:

277
123
456



等等

我能夠使用read()Linux系統調用讀取文件內容並將其存儲在數組緩沖區中,例如

// open the file
fileDesc = open(filename,O_RDONLY);
// read the file if it opened successfully

read(fileDesc, buffer, MAX_BUFF_SIZE)

我還有很多其他內容,但是當我使用printf(%c格式)查看緩沖區的內容時,它會將文件內容存儲為

緩沖區[0] = 2
緩沖區[1] = 7
緩沖區[2] = 7
緩沖區[3] =
緩沖區[4] = 1
緩沖區[5] = 2
緩沖區[6] = 3


等等

我真的希望每個緩沖區索引在每個\\ n之前都包含一個完整的值,例如

緩沖區[0] = 277
緩沖區[1] = 123
緩沖區[2] = 456


等等

有什么方法可以控制read()系統調用將文件內容存儲到緩沖區的方式? 還是對此任務有更好的選擇?

謝謝。

將文本數據解析為數字不是OS提供的I / O例程的權限。 他們只是按原樣提供文件內容。

C標准庫提供了一些可以進行解析的功能。 例如,看一下strtol

請注意,您將有兩個緩沖區,一個為charunsigned char類型的緩沖區,用於保存原始數據,另一個為適當的數字類型,可以保存解析的值。

使用緩沖的C stdio庫,您將獲得更好的成功。 這是您需要的基本代碼:

#include <stdio.h>

FILE *fp;
int n;


fp = fopen(filename, "r");
if (fp == NULL) ... // error, could not open

while (fscanf(fp, "%d", &n) == 1) {
    printf("n = %d\n", n);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM