在C中按升序显示字符

时间:2018-07-19 15:13:18

标签: c

我只是从C开始,我想编写一个程序以单行形式将小写字母显示为 升序,从字母“ a”开始。它应该以此方式进行原型化 void ft_print_alphabet(void); 我正在尝试此代码,但无法正常工作。

void    ft_putchar(char c);

void    ft_print_alphabet(void)
{
    char    letter;

    letter = 'a';
    while (letter <= 'z')
    {
        ft_putchar(letter);
        letter++;
    }
}

int main(void)
{
    ft_print_alphabet();
    return 0;
}

我使用gcc编译它(因为这是我们必须使用的),如下所示: gcc -o ftpp ftpp.c 但是我不断收到这个错误

Undefined symbols for architecture x86_64:
  "_ft_putchar", referenced from:
      _ft_print_alphabet in ft_print_alphabet-3d7c19.o
ld: symbol(s) not found for architecture x86_64

3 个答案:

答案 0 :(得分:3)

这可能就是您想要的,只需使用ft_putchar来实现write

#include <unistd.h>

void ft_putchar(char c) { write(STDOUT_FILENO, &c, 1); }

void ft_print_alphabet(void) {
  char letter;

  letter = 'a';
  while (letter <= 'z') {
    ft_putchar(letter);
    letter++;
  }
}

int main(void) {
  ft_print_alphabet();
  return 0;
}

答案 1 :(得分:2)

打印字符的标准功能是putchar。您需要执行#include <stdio.h>才能使用它。

#include <stdio.h>

void    ft_print_alphabet(void)
{
    char    letter;

    letter = 'a';
    while (letter <= 'z')
    {
        putchar(letter);
        letter++;
    }
}

int main(void)
{
    ft_print_alphabet();
    return 0;
}

答案 2 :(得分:0)

这只是为了娱乐,您不必为此担心太多。该代码不是完全可移植的。

出于向后兼容性的考虑,IBM大型机上的系统编译器仍默认为EBCDIC(代码页1047),而不是ASCII。您在该编译器上的程序将产生

abcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ¤µ~stuvwxyz

任何符合标准的C编译器都必须使用连续的值对数字'0''9'进行编码。由于存在一个例外,因此字母'a''z''A''Z'的执行字符集不需要连续。

您需要担心的更现实的情况是国际化。当前语言环境的正确“字母顺序”(或归类顺序)并不总是与当前字符编码相同!实际上,情况往往并非如此。