【发布时间】:2012-01-28 01:50:39
【问题描述】:
这是我的第二个问题,因为这个问题我在第一个问题上遇到了麻烦。 我有一个文件,我必须使用 read() 语句读取,没有 fget() 或 fread() 等 我用这条线。
read(fileRead, buffer, blocksize);
如您所知,fileRead 是我的文件描述符,buffer 是无符号字符,blocksize 是缓冲区的大小(我选择了 32); 我的问题是我有一个循环,它一直运行到文件结束并获取文件的缓冲区(32),我需要将它放入一个字符串中。
所以我想知道您是否可以帮助我编写将缓冲区并将其附加到字符串的代码行(不是二维数组,这不好) 我试过了
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 ++;
}
谢谢
【问题讨论】:
-
您确定您的数据线是 32 字节长吗?向我们展示正在解析的文件。
-
我通过读取命令传递文件 read(fileRead, buffer, blocksize) blocksize 是 32,这是你想要的吗?我的问题是将“缓冲区”放入单个字符串中