如何用C语言输出C中的单个字符?

时间:2015-08-07 19:39:14

标签: c function unix

有人可以通过 来打印单个字母,例如" b"在C中同时只使用写入功能(不是printf)。

我很确定它使用

#include <unistd.h>

你能告诉我写属性是如何工作的吗?我真的不明白

int  write(  int  handle,  void  *buffer,  int  nbyte  );

你们中的一些人还可以投入一些C初学者技巧吗?

我正在使用UNIX。

2 个答案:

答案 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);
}

Demo.

答案 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_FILENOunistd.h中定义的标准输出的文件描述符,&b是包含'b'缓冲区的地址字节数为1.