我需要实现一个C函数
ssize_t readString(int filedes, char* buf, ssize_t max);
从文件描述符'filedes'关联的文件中读取字符串
,进入缓冲区'buf'并返回读取的字节数。 换句话说我想用 与我使用的方式相同 下面我将介绍我到目前为止所做的工作,但它始终无法正常工作。
你对我的代码有什么建议吗?
你能建议更好地实现这个功能吗? 由于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;
}
答案 0 :(得分:1)
ssize_t readString(int filedes, char* buf){
char *temp;
int n = sizeof(buf)/sizeof(char); int i;
我认为你误解了sizeof
的作用。它计算出你要求它计算尺寸的东西的大小。在这种情况下,该buf
是char *
。因此,您基本上要求它指向一个字符的指针占用多少字节。据推测,你想要缓冲区的大小。所以你的函数需要它作为一个额外的参数。