2

read 関数を使用してビット単位で読み込もうとしていますが、バッファを使用して結果をどのように出力すればよいかわかりません。

現在、コードフラグメントは次のとおりです

 char *infile = argv[1];
 char *ptr = buff;
 int fd = open(infile, O_RDONLY); /* read only */
 assert(fd > -1);
 char n;
 while((n = read(fd, ptr, SIZE)) > 0){ /*loops that reads the file                                until it returns empty */
   printf(ptr);
 }
4

3 に答える 3

0

これがあなたのために仕事をするコードです:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <assert.h>
#include <string.h>

#define SIZE        1024

int main(int argc, char* argv[])
{
    char *infile = "Text.txt";
    char ptrBuffer[SIZE];
    int fd = open(infile, O_RDONLY); /* read only */
    assert(fd > -1);
    int n;
    while((n = read(fd, ptrBuffer, SIZE)) > 0){ /*loops that reads the file                                until it returns empty */
        printf("%s", ptrBuffer);
        memset(ptrBuffer, 0, SIZE);
    }

    return 0;
}

ファイル名をパラメータとして読み取ることができます。

于 2013-09-24T15:26:53.263 に答える
0

が文字列であっても、ではなくptrを使用する必要がありますprintf("%s", ptr);printf(ptr);

ただし、電話をかけてから

read(fd, ptr, SIZE)

ptrめったに文字列ではありません (文字列は null で終了する必要があります)。ループを使用して、必要な形式を選択する必要があります。例えば:

for (int i = 0; i < n; i++)
    printf("%02X ", *ptr);
于 2013-09-24T15:28:24.983 に答える