对于我的项目,我必须在不使用函数库的情况下打印整数值(例如itoa
,sprintf
,printf
,fprintf,fwrite
等...),但我只能使用系统调用write()
答案 0 :(得分:2)
您希望在不使用printf
,fwrite
等库函数的情况下打印整数。您可以使用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;
}