這是我的第二個問題,因爲這個問題導致我遇到了第一個問題。 我有一個文件,我必須閱讀使用read()語句,no no fget()或fread()等 我使用該行。如你所知fileRead是我的filedescriptor,buffer是一個無符號字符,blocksize是緩衝區的大小(我選擇了32); 我的問題是我有一個循環運行,直到文件結束並採取文件(32)的緩衝區,我需要把它放入一個字符串。使用read()並將緩衝區放入一個字符串中
所以我在想,如果你能幫助我的代碼行它會使用緩衝區和追加到一個字符串(不是二維數組,這將不會是好的) 我試圖
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);
}
但是,當我嘗試將它放入結構中時,這不起作用。 我需要該文件到一個字符串使用read()任何想法?
我對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 ++;
}
謝謝
你確定你的數據L ine是32字節長?向我們展示正在分析的文件。 – Vovanium 2011-12-26 21:29:49
我通過read命令讀取文件(fileRead,buffer,blocksize)blocksize爲32,那是你想要的嗎?我的問題是將「緩衝區」放入一個字符串 – MrEwok 2011-12-27 11:29:34