输入和输出
- C风格(使用`printf`和`scanf`)
- 输出字符
- 输入字符
- C++风格(使用`cin`和`cout`)
- 输出字符
- 输入字符
- 注意事项
在C和C++中,字符的输入和输出可以通过多种方式实现,包括使用标准输入输出库函数如
printf
和
scanf
(C风格),以及
cin
和
cout
(C++风格)。以下是一些基本的示例:
C风格(使用printf
和scanf
)
输出字符
使用printf
函数输出字符:
#include <stdio.h>
int main() {char ch = 'A';printf("%c\n", ch); // 输出字符'A'printf("%hhd\n", ch); // 输出65printf("%d\n", ch); // 输出65return 0;
}
输入字符
- 在C语言中,
scanf
函数用于从标准输入(通常是键盘)读取格式化输入。scanf
函数返回成功匹配并赋值的输入项的数量。如果遇到文件结束符(EOF),scanf
函数会返回EOF。
#include <stdio.h>
int main() {//接收所有输入字符,包括换行for(char a;scanf("%c",&a) !=EOF; ){printf("%d\n",a);} //如果输入a+enter,则打印输出 97 10return 0;
}
- 表达式
scanf("%c", &a) != EOF
检查scanf
函数是否成功读取了一个字符并将其存储在变量a
中,并且没有遇到文件结束符(EOF)。如果scanf
成功读取了一个字符,它将返回1,因为格式字符串"%c"
只指定了一个输入项。因此,scanf("%c", &a)
的返回值,不等于EOF,则说明输入成功。
#include <stdio.h>int main() {char a;// 循环直到用户输入EOF(通常是Ctrl+D或Ctrl+Z)while (scanf("%c", &a) != EOF) {// 处理读取到的字符printf("You entered: %c\n", a);}return 0;
}
- 在这个例子中,程序会不断读取字符直到遇到EOF。每次读取一个字符后,程序会打印出该字符。当用户发送EOF信号时,
scanf
函数将返回EOF,循环将终止,程序结束。 - 请注意,
scanf
函数不会消耗掉输入流中的换行符(\n
),所以如果你在循环中使用scanf
读取字符,你可能需要在格式字符串中包含一个空格来忽略任何剩余的空白字符,包括换行符:
while (scanf(" %c", &a) != EOF) { // 注意格式字符串前的空格// 处理读取到的字符printf("You entered: %c\n", a);
}
格式字符串中的空格告诉scanf
忽略任何前导的空白字符。
C++风格(使用cin
和cout
)
输出字符
使用cout
输出字符:
#include <iostream>int main() {char ch = 'A';std::cout << ch << std::endl; // 输出字符'A'return 0;
}
输入字符
使用cin
输入字符:
#include <iostream>int main() {char ch;std::cout << "Enter a character: ";std::cin >> ch; // 读取一个字符std::cout << "You entered: " << ch << std::endl;return 0;
}
注意事项
-
缓冲区:在使用
scanf
和cin
时,如果输入中包含空白字符(如空格、制表符或换行符),它们会停止读取。例如,scanf("%c", &ch);
在遇到空格时会停止,而cin >> ch;
会跳过前面的空白字符。 -
输入流:
cin
会自动忽略掉输入流中的空白字符,直到读取到非空白字符。 -
输出流:
cout
会自动在每次输出后不换行,除非你使用std::endl
或'\n'
来显式地添加换行。