有人可以通过 来打印单个字母,例如" b"在C中同时只使用写入功能(不是printf)。
我很确定它使用
#include <unistd.h>
你能告诉我写属性是如何工作的吗?我真的不明白
int write( int handle, void *buffer, int nbyte );
你们中的一些人还可以投入一些C初学者技巧吗?
我正在使用UNIX。
答案 0 :(得分:4)
您已经找到了自己的功能,现在只需要传递正确的参数:
int handle = open("myfile.bin", O_WRONLY);
//... You need to check the result here
int count = write(handle, "b", 1); // Pass a single character
if (count == 1) {
printf("Success!");
}
我确实想要使用stdout。如何编写显示整个字母的版本?
您可以为stdout使用预定义的常量。它被称为STDOUT_FILENO
。
如果你想写出整个字母表,你可以这样做:
for (char c = 'A' ; c <= 'Z' ; c++) {
write(STDOUT_FILENO, &c, 1);
}
答案 1 :(得分:3)
让我们看看write()
的{{3}},其中说明了
ssize_t write(int fd, const void *buf, size_t count);
描述
write()
将指向count
的缓冲区中的buf
个字节写入文件描述符fd
引用的文件。
根据您的要求,您需要传递包含b
的缓冲区地址以打印到标准输出。
让我们看看一些代码,是吗?
#include <stdio.h>
#include <unistd.h>
int main(void) {
char b = 'b';
write(STDOUT_FILENO, &b, 1);
return 0;
}
让我解释一下。这里,STDOUT_FILENO
是unistd.h
中定义的标准输出的文件描述符,&b
是包含'b'
的缓冲区的地址字节数为1.