0

この問題のために最初の質問に問題があったので、これは私の2番目の質問です。read()ステートメントを使用して読み取らなければならないファイルがあります。fget()やfread()などはありません。この行を使用します。

read(fileRead, buffer, blocksize);

ご存知のように、fileReadは私のファイル記述子であり、bufferはunsigned charであり、blocksizeはbufferのサイズです(私は32を選択しました)。私の問題は、ファイルが終了するまで実行され、ファイルのバッファー(32)を取得するループがあり、それを文字列に入れる必要があることです。

だから私はあなたがバッファを取り、それを文字列に追加するコードの行を手伝ってくれるかどうか疑問に思っていました(2D配列ではなく、これは良くありません)私は試しました

openCopyClose(int argc, char ** argv)
{
    int i=0,j=0, k=0, count = 0;
    size_t blocksize = 32;
    char fromFile[256], newFile[1000][100], string[100000];
    int fileRead;
    unsigned char buffer[blocksize];
    ssize_t status;

    strcpy(fromFile, argv[1]);

    fileRead = open(fromFile, O_RDONLY);  // open for reading

    status = 99;
    while (status > 1)        //while not EOF or error
    {
        status = read(fileRead, buffer, blocksize);
        strcpy(newFile[i], buffer);

        for(count = 0; count<= 32; count++)
        {
            buffer[count] = 0;
        }
        i ++;                   

        if(status < 0)
        {
            printf("oops2\n");
            exit(1);
        }

    }
    printf("\n");

    for(j = 0; j < i; j++)
    {
        printf("%s", newFile[j]);
    }          
    close(fileRead);

}

しかし、構造体に配置するためにstrtokしようとすると、これは機能しません。read()を使用してそのファイルを1つの文字列にする必要がありますか?

その後のstrtokのコードは次のようになる必要があります

struct processStruct processes[700];
while(count < 701)
{

    processes[count].processNumber = strtok(newFile[0], " \n");
    processes[count].quanta = atoi(strtok(NULL, " \n"));
    processes[count].priority = atoi(strtok(NULL, " \n"));

    count ++;
}

ありがとうございました

4

1 に答える 1

0

ファイルを文字列に入れる方法を解決しました。比較的簡単でした。見逃して驚いています

for(k =0; k < sizeof(buffer); k++)
{
    newFile[i] = buffer[k];
    i++;
 }

そして今、それを構造体に入れます.....

于 2011-12-27T13:00:01.550 に答える