学习C – C字符类型
char类型的值占用所有数据类型的最小内存量。
它们通常只需要一个字节。
您可以通过字符常量为char类型的变量指定初始值。
字符常数可以只是单引号之间的字符。这里有些例子:
char letter = "A"; char digit = "9"; char exclamation = "!";
您可以使用一对单引号之间的转义序列来指定字符常量:
char newline = "\n"; char tab = "\t"; char single_quote = "\"";
您也可以使用整数值初始化char类型的变量,只要该值适用于您的编译器的char类型的范围,如下例所示:
char character = 74; // ASCII code for the letter J
char类型的变量具有一种双重个性:您可以将其解释为字符或整数。
下面是一个值为char类型的算术运算的例子:
char letter = "C"; // letter contains the decimal code value 67 letter = letter + 3;// letter now contains 70, which is "F"
因此,您可以对char类型的值执行算术,并将其视为字符。
字符输入和字符输出
您可以从键盘读取单个字符,并使用格式说明符%c的scanf()函数将其存储在char类型的变量中,例如:
char ch = 0; scanf("%c", &ch); // Read one character
要使用printf()函数将单个字符写入命令行,请使用相同的格式说明符%c
:
printf("The character is %c\n", ch);
当然,也可以输出一个字符的数值:
printf("The character is %c and the code value is %d\n", ch, ch);
该语句将以ch作为字符和数值输出值。
#include <stdio.h>
int main(void)
{
char first = "A";
char second = 63;
printf("The first example as a letter looks like this - %c\n", first);
printf("The first example as a number looks like this - %d\n", first);
printf("The second example as a letter looks like this - %c\n", second);
printf("The second example as a number looks like this - %d\n", second);
return 0;
}
上面的代码生成以下结果。
注意
您还可以使用格式说明符%x而不是%d将char类型的变量的整数值输出为十六进制值。
我们来看另外一个例子,你将算术运算应用到char类型的值中:
#include <stdio.h>
int main(void)
{
char first = "A";
char second = "B";
char last = "Z";
char number = 40;
char ex1 = first + 2; // Add 2 to "A"
char ex2 = second - 1; // Subtract 1 from "B"
char ex3 = last + 2; // Add 2 to "Z"
printf("Character values %-5c%-5c%-5c\n", ex1, ex2, ex3);
printf("Numerical equivalents %-5d%-5d%-5d\n", ex1, ex2, ex3);
printf("The number %d is the code for the character %c\n", number, number);
return 0;
}
上面的代码生成以下结果。
例子
改变输入,保留非字母
#include <stdio.h>
#include <ctype.h> // for isalpha()
int main(void)
{
char ch;
while ((ch = getchar()) != "\n")
{
if (isalpha(ch)) // if a letter,
putchar(ch + 1); // display next letter
else // otherwise,
putchar(ch); // display as is
}
putchar(ch); // display the newline
return 0;
}
上面的代码生成以下结果。
例2
改变输入,保留空格
#include <stdio.h>
#define SPACE " " // that"s quote-space-quote
int main(void)
{
char ch;
ch = getchar(); // read a character
while (ch != "\n") // while not end of line
{
if (ch == SPACE) // leave the space
putchar(ch); // character unchanged
else
putchar(ch + 1); // change other characters
ch = getchar(); // get next character
}
putchar(ch); // print the newline
return 0;
}
上面的代码生成以下结果。
例3
以下代码显示字符的代码。
#include <stdio.h>
int main(void)
{
char ch;
printf("Please enter a character.\n");
scanf("%c", &ch); /* user inputs character */
printf("The code for %c is %d.\n", ch, ch);
return 0;
}
上面的代码生成以下结果。
例4
以下代码使用转义字符。
#include <stdio.h>
int main(void)
{
float salary;
printf("\aEnter your desired monthly salary:");/* 1 */
printf(" $_______\b\b\b\b\b\b\b"); /* 2 */
scanf("%f", &salary);
printf("\n\t$%.2f a month is $%.2f a year.", salary,
salary * 12.0); /* 3 */
printf("\rGee!\n"); /* 4 */
return 0;
}
上面的代码生成以下结果。