2016-03-15 75 views
0

在我的计算机体系结构课程中,我们被要求编写一个程序,它接受一个'ASCII'字符串作为函数参数之一。不知道可能有不同的字符串变体,我会像往常一样声明一个字符数组,但是如何声明一个特定于ASCII字符串的字符数组。请提供一个指向ASCII字符串声明的指针示例。如果提到的内容不清楚,请在下面评论。C中的字符串和ASCII字符串有区别吗?

+4

所有的ASCII字符串都是字符串;该任务可能会说,所以你知道你*不必确保你的程序使用UTF-8字符串或UTF-16字符串或EBCDIC(!)字符串。 – immibis

+1

根据C11规范,您的选择是'char','wchar_t','char16_t'和'char32_t'。指定'ASCII'字符串意味着一个简单的'char'数组应该可以工作。 – user3386109

回答

1

C中的每个字符串都是ASCII。标准的ASCII字符是7位宽。你的教授只是想强调你应该使用字节数组来存储字符串。不像我们说UTF-8,它可以使用最多4个字节来编码某些字符。

char *str = "example";

+0

C程序可以处理非ASCII字符串,并且一直这样做。像'grep'这样的POSIX命令的大多数现代GNU/Linux实现都是用C语言编写的,并且使用UTF-8字符串(如果使用utf8语言环境)。而且,ASCII字符是8位宽,但只有7位有效位。高位总是被清除,但它是ASCII编码的一部分,不仅仅是通过将值存储在C'char' /'int8_t'数组中引入的填充。 –

相关问题