C - 如何使用系统调用打印整数?

时间:2018-06-08 09:02:46

标签: c printing int system-calls

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

1 个答案:

答案 0 :(得分:2)

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

  

write()写入从buf开始的缓冲区计数字节   文件描述符fd。

引用的文件      

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;
}