阿罗哈
我是新来的,所以请放轻松。我正在尝试读取具有功能的文件,read()
然后读取write()
文件或文件描述符。我的函数成功读取了一个文件,但是当我尝试读取一个较大的文件时(以我的示例大小为40,000字节),会出现问题。
我认为我必须编写一个while循环,该循环将一直读取到文件末尾,但是我仍然坚持如何循环的想法。
(我在程序主体中打开文件或文件描述符)
我的函数(还转换二进制输入char数据并写入ASCII):
void function(int readFrom,int writeOn){
char buffer[100];
int x = read(readFrom, buffer, sizeof(buffer));
int size= x/8;
int i;
for(i=0; i<size; i++){
char temp[sizeof(int)-1];
sprintf(temp,"%d",buffer[i];
write(writeOn, temp, sizeof(temp));
}
}
您需要检查函数read
和的返回值write
。它们返回的读/写字节数可能小于您作为第三个参数传递的字节数。两者read
和write
必须在类似以下的循环中完成:
int bytesRead = 0;
while (bytesRead < sizeof(buffer)) {
int ret = read(readFrom, buffer + bytesRead, sizeof(buffer) - bytesRead);
if (ret == 0)
break; / * EOF */
if (ret == -1) {
/* Handle error */
}
bytesRead += ret;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句