
C语言如何输出与输入:使用printf和scanf、格式化控制符的使用、文件输入输出函数、字符串输入输出函数
C语言是功能强大的编程语言,输入和输出(I/O)操作是其核心部分。主要的输入输出函数包括printf和scanf、格式化控制符的使用、文件输入输出函数、字符串输入输出函数。其中,printf和scanf函数用于控制台I/O,文件I/O涉及fopen、fclose、fread、fwrite等函数,字符串I/O则使用gets、puts等函数。详细理解和掌握这些函数可以显著提高编程效率和代码可读性。下面将详细介绍每一个方面。
一、使用printf和scanf
1、printf函数
printf函数是C语言中最常用的输出函数。其基本语法为:
int printf(const char *format, ...);
- format: 是一个字符串,包含文本和格式化指令。
- …: 是可变参数,可以是变量、常量、表达式等。
常用格式化控制符
- %d:输出整型数。
- %f:输出浮点型数。
- %s:输出字符串。
- %c:输出单个字符。
例如:
int main() {
int a = 10;
float b = 5.5;
char c = 'A';
char str[] = "Hello, World!";
printf("Integer: %dn", a);
printf("Float: %.2fn", b); // 保留两位小数
printf("Character: %cn", c);
printf("String: %sn", str);
return 0;
}
2、scanf函数
scanf函数用于从标准输入读取数据。其基本语法为:
int scanf(const char *format, ...);
- format: 是一个字符串,包含格式化指令。
- …: 是可变参数,必须是变量的地址。
常用格式化控制符
- %d:读取整型数。
- %f:读取浮点型数。
- %s:读取字符串。
- %c:读取单个字符。
例如:
int main() {
int a;
float b;
char c;
char str[50];
printf("Enter an integer: ");
scanf("%d", &a);
printf("Enter a float: ");
scanf("%f", &b);
printf("Enter a character: ");
scanf(" %c", &c); // 注意前面的空格
printf("Enter a string: ");
scanf("%s", str);
printf("You entered: %d, %.2f, %c, %sn", a, b, c, str);
return 0;
}
二、格式化控制符的使用
1、基本格式化控制符
整数类型
- %d:有符号十进制整数。
- %u:无符号十进制整数。
- %x:无符号十六进制整数。
- %o:无符号八进制整数。
浮点数类型
- %f:小数形式的浮点数。
- %e:指数形式的浮点数。
- %g:根据数值的不同,自动选择%f或%e。
字符和字符串
- %c:单个字符。
- %s:字符串。
2、进阶格式化控制符
对齐和宽度
- %5d:输出的整数至少占5个字符宽度。
- %-5d:左对齐,占5个字符宽度。
精度
- %.2f:保留两位小数。
- %.3s:输出最多三个字符的字符串。
例如:
int main() {
int num = 123;
float pi = 3.14159;
char str[] = "Hello";
printf("Integer with width: %5dn", num);
printf("Integer left aligned: %-5dn", num);
printf("Float with precision: %.2fn", pi);
printf("String truncated: %.3sn", str);
return 0;
}
三、文件输入输出函数
1、打开和关闭文件
fopen和fclose函数
- fopen:打开文件。
FILE *fopen(const char *filename, const char *mode);
- fclose:关闭文件。
int fclose(FILE *stream);
文件模式
- "r":只读模式。
- "w":写入模式,若文件不存在则创建,若存在则清空。
- "a":追加模式,若文件不存在则创建,若存在则在文件末尾追加内容。
例如:
FILE *file;
file = fopen("example.txt", "r");
if (file == NULL) {
printf("Error opening file.n");
return 1;
}
fclose(file);
2、读写文件
fread和fwrite函数
- fread:从文件读取数据。
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
- fwrite:向文件写入数据。
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
例如:
FILE *file;
char buffer[100];
// 写入数据
file = fopen("example.txt", "w");
if (file != NULL) {
fwrite("Hello, World!", sizeof(char), 13, file);
fclose(file);
}
// 读取数据
file = fopen("example.txt", "r");
if (file != NULL) {
fread(buffer, sizeof(char), 13, file);
buffer[13] = '