gpt4 book ai didi

c - 使用 write() 打印到控制台

转载 作者:行者123 更新时间:2023-12-05 03:15:38 27 4
gpt4 key购买 nike

所以我试图创建一个函数,它使用 write() 系统调用(printf 和其他选项不可用)将字符串输出到控制台。然而,我遇到了一个障碍。

这是我的功能:

static void doPrint (const char *s)
{
write (STDOUT_FILENO, s, sizeof(s));
}

调用者:

doPrint ("Hello World!\n");

但是,它只打印出:

Hello Wo

我做错了什么?

注意:对 stdlib 和 stdio 的访问是受限的

谢谢

最佳答案

在此上下文中,sizeof 不会执行您想要的操作 - 它产生指针的大小,而不是字符串的大小。请改用 strlen

but access to the stdlib is restricted

您可以使用 while 和计数器来滚动自己。未经测试:

size_t my_strlen(const char *s)
{
size_t len = 0;
while (*s++)
len++;

return len;
}

或者更高效的版本:

size_t my_strlen(const char* s)
{
const char *end = s;
while (*end++) {};
return end-s-1;
}

上面的工作是因为指针前进到字符串中的最后一个位置,然后大小是最后一个指针位置和第一个指针位置之间的差异,减 1 当然是为了处理空终止字符。

关于c - 使用 write() 打印到控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14863465/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com