![](/img/trans.png)
[英]How to read all the contents of a file using read() system call in C
[英]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
。
請注意,您將有兩個緩沖區,一個為char
或unsigned 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.