C - 如何使用系统调用打印整数? [重复]

问题描述 投票:-4回答:1

这个问题在这里已有答案:

对于我的项目,我必须打印一个整数值而不使用函数库(例如itoasprintfprintf,fprintf,fwrite等...),但我只能使用系统调用write()

c printing int system-calls
1个回答
2
投票

您想要在不使用printffwrite等库函数的情况下打印整数。您可以使用write()系统调用。打开write的手册页。它说

write()写入从buf开始的缓冲区到文件描述符fd引用的文件的count个字节。

ssize_t write(int fd, const void *buf, size_tcount);

例如

int num = 1234;
write(STDOUT_FILENO,&num,sizeof(num));

要么

write(1,&num,sizeof(num)); /* stdout --> 1  */

以上write()系统调用将num写入stdout流。

编辑: - 如果您的输入是integer并且您想将其转换为字符串并打印它,但不想使用像itoa()sprintf()printf()这样的库函数。为此,您需要实现用户定义sprintf()然后使用write()

int main(void) {
        int  num = 1234; 
        /* its an integer, you need to convert the given integer into
        string first, but you can't use sprintf()
        so impliment your own look like sprintf() */

        /*let say you have implimented itoa() or sprintf()
        and new_arr containg string 1234 i,e "1234"*/

        /* now write new_arr into stdout by calling write() system call */  
        write(1,new_arr,strlen(new_arr)+1);
        return 0;
}
© www.soinside.com 2019 - 2024. All rights reserved.