我只是从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
答案 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'
的执行字符集不需要连续。
您需要担心的更现实的情况是国际化。当前语言环境的正确“字母顺序”(或归类顺序)并不总是与当前字符编码相同!实际上,情况往往并非如此。