read()系統調用讀字符串我需要實現一個C函數在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;
}
「有時候效果不好」不是一個很好的問題描述。 –
是的,給一些您的程序無法運行的示例輸入,描述預期的行爲(您已經完成)以及實際行爲是什麼。 – kaylum