-3

对于一个练习,我必须用这个原型显示一个字符串/字符链:

void display(char *str);

我无权使用'printf',但我必须使用'write'。

有人可以解释一下这是如何工作的吗?

我无权使用除 write 之外的任何功能!!!

4

3 回答 3

4

像这样(我假设你的意思是 *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));
}
于 2020-09-11T12:13:49.070 回答
1

一个自包含且高效的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
}
于 2020-09-11T12:33:13.910 回答
-1

由于你不能使用任何其他功能,我会使用这个:

#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);
}
于 2020-09-11T12:28:36.380 回答