对于一个练习,我必须用这个原型显示一个字符串/字符链:
void display(char *str);
我无权使用'printf',但我必须使用'write'。
有人可以解释一下这是如何工作的吗?
我无权使用除 write 之外的任何功能!!!
像这样(我假设你的意思是 *nixwrite
函数):
#include <unistd.h>
// EDIT: now without using string.h
size_t my_strlen(char const *str)
{
size_t ret = 0u;
while (str[ret++] != '\0')
;
return ret;
}
void display(char const *str)
{
write(STDOUT_FILENO, str, my_strlen(str));
}
一个自包含且高效的display
函数:
void display(char const *str) {
int length = 0; // string length
const char *pch = str; // pch points to start of string
while (*pch++) // loop thtough string until the end of string
length++;
write(STDOUT_FILENO, str, length); // write the string in one go
}
由于你不能使用任何其他功能,我会使用这个:
#define MAX_LENGTH 256
void display(char const *str) {
int lastIndex;
for(lastIndex=0; str[lastIndex]!='\0' && lastIndex<MAX_LENGTH; lastIndex++) {}
write(STDOUT_FILENO,str,lastIndex);
}