对于我的项目,我必须打印一个整数值,而不使用函数库(例如:itoa
、sprintf
、printf
、fprintf、fwrite
等),但我只能使用系统调用write()
发布于 2018-06-08 17:12:59
您希望在不使用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;
}
https://stackoverflow.com/questions/50757018
复制相似问题