我需要实现一个 C 函数
ssize_t readString(int filedes, char* buf, ssize_t max);
从与文件描述符 'filedes' 关联的文件中读取字符串到缓冲区 'buf' 并返回读取的字节数。'max' 变量不是必需的。
换句话说,我想使用
readString(fileDescriptor, buf);
我会用同样的方式
fscanf(inputFile, "%s", buf);
下面我提到了我到目前为止所做的事情,但它并不总是很好用。你对我的代码有什么建议吗?你能建议更好地实现这个功能吗?
谢谢
ssize_t readString(int filedes, char* buf){
char *temp;
int n = sizeof(buf)/sizeof(char); int i;
ssize_t rbytes = 0; /* bytes read */
size_t cbyte = sizeof(char);
/* check if file is empty */
if (read(filedes, temp, cbyte) < 1)
return 0;
/* eat spaces */
while ( (*temp == ' ') || (*temp == '\n') || (*temp == '\t') )
if (read(filedes, temp, cbyte) < 1)
return 0;
/* read string */
for (i=0; i<n-1; i++){
buf[i] = *temp;
rbytes++;
/* check if file is over */
if (read(filedes, temp, cbyte) < 1)
return rbytes;
/* check if string is over */
if ( (*temp == ' ') || (*temp == '\n') || (*temp == '\t') )
break;
}
buf[++i] = '\0';
return rbytes;
}