这个问题在这里已有答案:
对于我的项目,我必须打印一个整数值而不使用函数库(例如itoa
,sprintf
,printf
,fprintf,fwrite
等...),但我只能使用系统调用write()
您想要在不使用printf
,fwrite
等库函数的情况下打印整数。您可以使用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;
}