c/c++输入和输出尺度库stdio和iostream介绍

打印 上一主题 下一主题

主题 829|帖子 829|积分 2487

介绍

在 c 和 c++语言中,对输入和输出提供了尺度库函数来进行操作,下面介绍一些常用的尺度库函数的利用。
c 语言的stdio.h

在C语言中,stdio.h是尺度库的头文件之一,提供了输入和输出操作的函数和宏定义。它包罗了一些常用的函数,用于读取和写入数据到尺度输入输出设备(比方键盘和屏幕)或文件中。
输入输出函数



  • printf:格式化输出函数,用于将格式化的数据输出到尺度输出设备(屏幕)
  1. int printf(const char *format, ...);
  2. /*
  3. format是一个格式控制字符串,用于指定输出的格式。
  4. ...表示可变参数列表,用于传递要输出的数据。
  5. */
复制代码
printf函数根据格式控制字符串中的格式说明符来决定怎样输出数据。下面是一些常见的格式说明符:
格式符说明%d输出带符号的十进制整数%f输出浮点数%c输出单个字符%s输出字符串%p输出指针地点%x/%X输出带符号的十六进制整数
  1. #include <stdio.h>
  2. int main() {
  3.     int age = 25;
  4.     float height = 1.75;
  5.     char grade = 'A';
  6.     char name[] = "John";
  7.     printf("Name: %s\n", name);
  8.     printf("Age: %d\n", age);
  9.     printf("Height: %.2f\n", height);
  10.     printf("Grade: %c\n", grade);
  11.     return 0;
  12. }
  13. /* 输出结果:
  14. Name: John
  15. Age: 25
  16. Height: 1.75
  17. Grade: A
  18. */
复制代码


  • scanf:格式化输入函数,用于从尺度输入设备(键盘)读取格式化的数据。
  1. int scanf(const char *format, ...);
  2. /*
  3. format是一个格式控制字符串,用于指定输入的格式。
  4. ...表示可变参数列表,用于传递要读取的数据的地址。
  5. */
复制代码
scanf函数根据格式控制字符串中的格式说明符来决定怎样读取输入数据,并将数据存储到相应的变量中。下面是一些常见的格式说明符:
格式符说明%d读取带符号的十进制整数%f读取浮点数%c读取单个字符%s读取字符串%p读取指针地点%x/%X读取带符号的十六进制整数
  1. #include <stdio.h>
  2. int main() {
  3.     int age;
  4.     float height;
  5.     char grade;
  6.     char name[100];
  7.     printf("Enter your name: ");
  8.     scanf("%s", name);
  9.     printf("Enter your age: ");
  10.     scanf("%d", &age);
  11.     printf("Enter your height: ");
  12.     scanf("%f", &height);
  13.     printf("Enter your grade: ");
  14.     scanf(" %c", &grade);
  15.     printf("Name: %s\n", name);
  16.     printf("Age: %d\n", age);
  17.     printf("Height: %.2f\n", height);
  18.     printf("Grade: %c\n", grade);
  19.     return 0;
  20. }
复制代码


  • fprintf:格式化输出函数,用于将格式化的数据输出到文件
  1. int fprintf(FILE *stream, const char *format, ...);
  2. /*
  3. stream是一个指向FILE类型结构体的指针,用于表示要输出的文件。
  4. format是一个格式控制字符串,用于指定输出的格式。
  5. ...表示可变参数列表,用于传递要输出的数据。
  6. */
复制代码
fprintf函数根据格式控制字符串中的格式说明符来决定怎样输出数据到文件。下面是一些常见的格式说明符:
格式符说明%d输出带符号的十进制整数%f输出浮点数%c输出单个字符%s输出字符串%p输出指针地点%x/%X输出带符号的十六进制整数
  1. #include <stdio.h>
  2. int main() {
  3.     FILE *file;
  4.     file = fopen("output.txt", "w");  // 打开文件以供写入
  5.     int age = 25;
  6.     float height = 1.75;
  7.     char grade = 'A';
  8.     char name[] = "John";
  9.     fprintf(file, "Name: %s\n", name);
  10.     fprintf(file, "Age: %d\n", age);
  11.     fprintf(file, "Height: %.2f\n", height);
  12.     fprintf(file, "Grade: %c\n", grade);
  13.     fclose(file);  // 关闭文件
  14.     return 0;
  15. }
复制代码


  • fscanf:格式化输入函数,用于从文件读取格式化的数据。
  1. int fscanf(FILE *stream, const char *format, ...);
  2. /*
  3. stream是一个指向FILE类型结构体的指针,用于表示要从中读取数据的文件。
  4. format是一个格式控制字符串,用于指定输入的格式。
  5. ...表示可变参数列表,用于传递要读取的数据的地址。
  6. */
复制代码
fscanf函数根据格式控制字符串中的格式说明符来决定怎样从文件中读取输入数据,并将数据存储到相应的变量中。下面是一些常见的格式说明符:
格式符说明%d读取带符号的十进制整数%f读取浮点数%c读取单个字符%s读取字符串%p读取指针地点%x/%X读取带符号的十六进制整数
  1. #include <stdio.h>
  2. int main() {
  3.     FILE *file;
  4.     file = fopen("input.txt", "r");  // 打开文件以供读取
  5.     int age;
  6.     float height;
  7.     char grade;
  8.     char name[100];
  9.     fscanf(file, "%s", name);
  10.     fscanf(file, "%d", &age);
  11.     fscanf(file, "%f", &height);
  12.     fscanf(file, " %c", &grade);
  13.     printf("Name: %s\n", name);
  14.     printf("Age: %d\n", age);
  15.     printf("Height: %.2f\n", height);
  16.     printf("Grade: %c\n", grade);
  17.     fclose(file);  // 关闭文件
  18.     return 0;
  19. }
复制代码
在上面的示例中,通过调用fopen函数打开一个文件,利用"r"模式指定以读取方式打开文件。然后,利用fscanf函数从文件中读取格式化的数据,并将其存储到相应的变量中。末了,利用printf函数将读取到的数据输出到屏幕上。末了,通过调用fclose函数关闭文件。


  • sprintf:格式化输出函数,将格式化的数据输出到字符串缓冲区中。
  1. int sprintf(char *str, const char *format, ...);
  2. /*
  3. str是一个指向字符数组的指针,用于表示输出的字符串。
  4. format是一个格式控制字符串,用于指定输出的格式。
  5. ...表示可变参数列表,用于传递要输出的数据。
  6. */
复制代码
sprintf函数根据格式控制字符串中的格式说明符来决定怎样输出数据到字符串中。下面是一些常见的格式说明符:
格式符说明%d输出带符号的十进制整数%f输出浮点数%c输出单个字符%s输出字符串%p输出指针地点%x/%X输出带符号的十六进制整数
  1. #include <stdio.h>
  2. int main() {
  3.     char str[100];
  4.     int age = 25;
  5.     float height = 1.75;
  6.     char grade = 'A';
  7.     char name[] = "John";
  8.     sprintf(str, "Name: %s, Age: %d, Height: %.2f, Grade: %c", name, age, height, grade);
  9.     printf("Formatted string: %s\n", str);
  10.     return 0;
  11. }
复制代码
在上面的示例中,利用sprintf函数将格式化的数据输出到字符串str中。通过将要输出的数据和格式控制字符串作为参数传递给sprintf函数,可以将格式化的数据存储到指定的字符串中。


  • sscanf:格式化输入函数,从字符串中读取格式化的数据。
  1. int sscanf(const char *str, const char *format, ...);
  2. /*
  3. str是一个指向输入字符串的指针,用于表示要从中读取数据的字符串。
  4. format是一个格式控制字符串,用于指定输入的格式。
  5. ...表示可变参数列表,用于传递要读取的数据的地址。
  6. */
复制代码
sscanf函数根据格式控制字符串中的格式说明符来决定怎样从字符串中读取输入数据,并将数据存储到相应的变量中。下面是一些常见的格式说明符:
格式符说明%d读取带符号的十进制整数%f读取浮点数%c读取单个字符%s读取字符串%p读取指针地点%x/%X读取带符号的十六进制整数
  1. #include <stdio.h>
  2. int main() {
  3.     char data[] = "John 25 1.75 A";
  4.     char name[100];
  5.     int age;
  6.     float height;
  7.     char grade;
  8.     sscanf(data, "%s %d %f %c", name, &age, &height, &grade);
  9.     printf("Name: %s\n", name);
  10.     printf("Age: %d\n", age);
  11.     printf("Height: %.2f\n", height);
  12.     printf("Grade: %c\n", grade);
  13.     return 0;
  14. }
复制代码
在上面的示例中,利用sscanf函数从字符串data中读取格式化的数据,并将其存储到相应的变量中。通过将要读取的数据和格式控制字符串作为参数传递给sscanf函数,可以从指定的字符串中提取格式化的数据。
文件操作函数



  • fopen:打开文件函数,用于打开文件并返回一个文件指针。
  1. FILE *fopen(const char *filename, const char *mode);
  2. /*
  3. filename是一个字符串,表示要打开的文件的名称或路径。
  4. mode是一个字符串,表示打开文件的模式,用于指定文件的读写方式。
  5. */
复制代码
fopen函数返回一个指向FILE范例的指针,该指针指向打开的文件。假如文件打开乐成,则返回的指针非空;否则返回空指针。
打开模式解释说明r以只读方式打开文件。文件必须存在,否则打开失败w以写入方式打开文件。假如文件存在,则会被截断为空文件;假如文件不存在,则会创建一个新文件a以追加方式打开文件。假如文件存在,则写入的数据会追加到文件末端;假如文件不存在,则会创建一个新文件r+以读写方式打开文件。文件必须存在,读写操作都可以进行w+以读写方式打开文件。假如文件存在,则会被截断为空文件;假如文件不存在,则会创建一个新文件a+以读写方式打开文件。假如文件存在,则写入的数据会追加到文件末端;假如文件不存在,则会创建一个新文件
  1. #include <stdio.h>
  2. int main() {
  3.     FILE *file;
  4.     char *filename = "example.txt";
  5.     // 打开文件以进行写入
  6.     file = fopen(filename, "w");
  7.     if (file == NULL) {
  8.         printf("无法打开文件 %s\n", filename);
  9.         return 1;
  10.     }
  11.     // 写入数据到文件
  12.     fprintf(file, "这是一个示例文本。\n");
  13.     fprintf(file, "Hello, World!\n");
  14.     // 关闭文件
  15.     fclose(file);
  16.     return 0;
  17. }
复制代码


  • fclose:关闭文件函数,用于关闭已打开的文件。
  1. int fclose(FILE *stream);
  2. //stream 是一个指向 FILE 类型的指针,表示要关闭的文件。
复制代码
  1. #include <stdio.h>
  2. int main() {
  3.     FILE *file;
  4.     char *filename = "example.txt";
  5.     // 打开文件以进行写入
  6.     file = fopen(filename, "w");
  7.     if (file == NULL) {
  8.         printf("无法打开文件 %s\n", filename);
  9.         return 1;
  10.     }
  11.     // 写入数据到文件
  12.     fprintf(file, "这是一个示例文本。\n");
  13.     fprintf(file, "Hello, World!\n");
  14.     // 关闭文件
  15.     int result = fclose(file);
  16.     if (result == EOF) {
  17.         printf("关闭文件失败。\n");
  18.         return 1;
  19.     }
  20.     return 0;
  21. }
复制代码


  • fread:从文件中读取数据函数。
  1. size_t fread(void *ptr, size_t size, size_t count, FILE *stream);
  2. /*
  3. ptr 是一个指向要存储读取数据的内存区域的指针。
  4. size 是要读取的每个数据项的大小(以字节为单位)。
  5. count 是要读取的数据项的数量。
  6. stream 是要从中读取数据的文件指针。
  7. */
复制代码
  1. #include <stdio.h>
  2. int main() {
  3.     FILE *file;
  4.     char *filename = "example.txt";
  5.     char buffer[100];
  6.     // 打开文件以进行读取
  7.     file = fopen(filename, "r");
  8.     if (file == NULL) {
  9.         printf("无法打开文件 %s\n", filename);
  10.         return 1;
  11.     }
  12.     // 从文件中读取数据
  13.     size_t items_read = fread(buffer, sizeof(char), sizeof(buffer) - 1, file);
  14.     if (items_read == 0) {
  15.         printf("读取文件失败。\n");
  16.         return 1;
  17.     }
  18.     // 在读取的数据末尾添加字符串结束符
  19.     buffer[items_read] = '\0';
  20.     // 输出读取的数据
  21.     printf("读取的数据:\n%s\n", buffer);
  22.     // 关闭文件
  23.     fclose(file);
  24.     return 0;
  25. }
复制代码


  • fwrite:向文件中写入数据函数。
  1. size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);
  2. /*
  3. ptr 是一个指向要写入文件的数据的指针。
  4. size 是每个数据项的大小(以字节为单位)。
  5. count 是要写入的数据项的数量。
  6. stream 是要写入数据的文件指针。
  7. */
复制代码
fwrite 函数会将指定内存区域中的数据写入到文件中。它返回实际乐成写入的数据项数量,大概在出错时返回一个小于 count 的值。
  1. #include <stdio.h>
  2. int main() {
  3.     FILE *file;
  4.     char *filename = "example.txt";
  5.     char data[] = "Hello, World!";
  6.     // 打开文件以进行写入
  7.     file = fopen(filename, "w");
  8.     if (file == NULL) {
  9.         printf("无法打开文件 %s\n", filename);
  10.         return 1;
  11.     }
  12.     // 将数据写入文件
  13.     size_t items_written = fwrite(data, sizeof(char), sizeof(data) - 1, file);
  14.     if (items_written == 0) {
  15.         printf("写入文件失败。\n");
  16.         return 1;
  17.     }
  18.     // 关闭文件
  19.     fclose(file);
  20.     return 0;
  21. }
复制代码


  • fgets:从文件中读取字符串函数。
  1. char *fgets(char *str, int n, FILE *stream);
  2. /*
  3. str 是一个指向字符数组(字符串)的指针,用于存储读取的数据。
  4. n 指定最大要读取的字符数(包括空字符)。
  5. stream 是文件指针或标准输入流(stdin),从中读取字符串。
  6. */
复制代码
fgets函数从指定的输入流中读取一行文本,并将其存储在提供的字符数组中。它最多读取 n-1 个字符,大概遇到换行符('\n')时停止读取,以保证结果字符串以空字符结尾。
  1. #include <stdio.h>
  2. int main() {
  3.     char input[100];
  4.     printf("请输入一行文本:");
  5.     fgets(input, sizeof(input), stdin);
  6.     printf("您输入的文本为:%s", input);
  7.     return 0;
  8. }
复制代码


  • fputs:向文件中写入字符串函数。
  1. int fputs(const char *str, FILE *stream);
  2. /*
  3. str 是要写入的字符串。
  4. stream 是文件指针或标准输出流(stdout),将字符串写入其中。
  5. */
复制代码
fputs函数将指定的字符串写入到指定的输出流中。它返回一个非负值(非负整数)体现乐成,大概返回EOF(-1)体现出错。
  1. #include <stdio.h>
  2. int main() {
  3.     FILE *file;
  4.     char *filename = "output.txt";
  5.     char *text = "Hello, World!";
  6.     // 打开文件以进行写入
  7.     file = fopen(filename, "w");
  8.     if (file == NULL) {
  9.         printf("无法打开文件 %s\n", filename);
  10.         return 1;
  11.     }
  12.     // 将字符串写入文件
  13.     int result = fputs(text, file);
  14.     if (result == EOF) {
  15.         printf("写入文件失败。\n");
  16.         return 1;
  17.     }
  18.     // 关闭文件
  19.     fclose(file);
  20.     return 0;
  21. }
复制代码
字符输入输出函数



  • getchar:从尺度输入设备(键盘)读取一个字符。
  • putchar:向尺度输出设备(屏幕)写入一个字符。
  • gets:从尺度输入设备(键盘)读取一行字符串。
  • puts:向尺度输出设备(屏幕)写入一行字符串。
错误处理函数



  • perror:打印错误信息函数。
  • ferror:检查文件错误函数。
  • clearerr:扫除文件错误标记函数。
文件定位函数



  • fseek:设置文件位置函数。
  1. int fseek(FILE *stream, long offset, int origin);
  2. /*
  3. stream 是文件指针,用于指定要操作的文件。
  4. offset 是要设置的偏移量,即要移动的字节数。
  5. origin 是起始位置,用于确定偏移量的参考点。它可以是以下常量之一:
  6.         SEEK_SET:从文件开头开始计算偏移量。
  7.         SEEK_CUR:从当前文件位置开始计算偏移量。
  8.         SEEK_END:从文件末尾开始计算偏移量。
  9. */
复制代码
fseek 函数用于将文件指针定位到指定位置。它可用于在文件中进行随机访问或重新定位文件指针。
  1. #include <stdio.h>
  2. int main() {
  3.     FILE *file;
  4.     char *filename = "example.txt";
  5.     char buffer[100];
  6.     // 打开文件以进行读取
  7.     file = fopen(filename, "r");
  8.     if (file == NULL) {
  9.         printf("无法打开文件 %s\n", filename);
  10.         return 1;
  11.     }
  12.     // 将文件指针定位到文件开头
  13.     fseek(file, 0, SEEK_SET);
  14.     // 读取文件内容
  15.     fgets(buffer, sizeof(buffer), file);
  16.     printf("文件内容:%s", buffer);
  17.     // 关闭文件
  18.     fclose(file);
  19.     return 0;
  20. }
复制代码


  • ftell:获取当前文件位置函数。
  1. long ftell(FILE *stream);
  2. //stream 是文件指针,用于指定要获取位置的文件。
复制代码
ftell 函数返回一个 long 范例的值,体现文件指针的当前位置相对于文件开头的偏移量(以字节为单元)。
  1. #include <stdio.h>
  2. int main() {
  3.     FILE *file;
  4.     char *filename = "example.txt";
  5.     // 打开文件以进行读取
  6.     file = fopen(filename, "r");
  7.     if (file == NULL) {
  8.         printf("无法打开文件 %s\n", filename);
  9.         return 1;
  10.     }
  11.     // 获取文件指针的当前位置
  12.     long position = ftell(file);
  13.     printf("文件指针的当前位置:%ld\n", position);
  14.     // 关闭文件
  15.     fclose(file);
  16.     return 0;
  17. }
复制代码
c++的iostream

在C++中,iostream是一个尺度库,用于输入和输出流的操作。它包罗了一组类和函数,用于处理输入和输出操作,包罗从尺度输入设备(键盘)读取数据,向尺度输出设备(屏幕)输出数据,以及与文件和其他数据流的交互。


  • iostream库包罗以下头文件:
  1. #include <iostream>
复制代码


  • iostream库提供了三个重要的流对象:
    cin:用于从尺度输入(键盘)读取数据。
    cout:用于向尺度输出(屏幕)输出数据。
    cerr:用于输出错误消息到尺度错误设备(通常是屏幕)。
  • 示例
  1. #include <iostream>
  2. int main() {    int age;    float height;    char grade;    std::string name;    std::cout << "Enter your name: ";    std::getline(std::cin, name);    std::cout << "Enter your age: ";    std::cin >> age;    std::cout << "Enter your height: ";    std::cin >> height;    std::cout << "Enter your grade: ";    std::cin >> grade;    std::cout << "Name: " << name << std::endl;    std::cout << "Age: " << age << std::endl;    std::cout << "Height: " << height << std::endl;    std::cout << "Grade: " << grade << std::endl;    return 0;}
复制代码
- iostream 库还提供了其他功能,如文件输入输出(利用 std::ifstream 和 std:fstream 类)、格式化输出(利用 std::setw、std::setprecision 等函数)等。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

反转基因福娃

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表