11-10 格式化文本的输入输出

1. scanf() 和 printf()

        scanf() 和 printf() 函数日常使用较多,此处不多介绍了。详细内容可参考:https://zh.cppreference.com/w/c/io/fscanf

2. sscanf() 和 sprintf()

        sscanf() 可类比于 scanf() 函数。scanf() 从控制台读取格式化输入,传入到特定变量中。例如 scanf("%d", &a) 把控制台输入的内容传入到 a 中。而 sscanf() 函数从字符串读取格式化输入,传到特定的变量中。10-5(https://blog.csdn.net/gltzlike/article/details/119559880)中利用 sscanf() 获取 ".123" 中的 123。

// int sscanf(const char *str, const char *format, ...)
void TestSscanf(){

  char *src = "12.123";
  int a;
  int b;

  sscanf(src, "%2d.%3d", &a, &b);
  printf("a: %d\n", a);   // a: 12
  printf("b: %d\n", b);   // b: 123
}

        sprintf() 函数发送格式化输出到指定的 str 字符串。此处将 str 看作 dest,其他内容为 src。sprintf() 函数本质便是将 src 内容复制到 dest 的指定位置,默认情况下从 0 位置开始。且一旦从 0 位置开始复制,会清空原有的 dest。10-4 小节也使用过此函数:https://blog.csdn.net/gltzlike/article/details/119548128

// int sprintf(char *str, const char *format, ...)
void TestSprintf(){

  char *dest = "hello";
  char *src = "hi";

  sprintf(dest, "%s", src);  // hi
  puts(dest);

  dest = "hello";
  sprintf(dest + 1, "%s", src);  // hhi
  puts(dest);

  dest = "hello";
  sprintf(dest + 5, "%s", src);  // hellohi
  puts(dest);
}

3. vscanf() 和 vprintf()

        vprintf() 和 变长参数 va_list 配合使用,可以输出多个参数,也可用来改造 printf() 函数。5-5 节中 PRINTLNF 函数:https://blog.csdn.net/gltzlike/article/details/114380186

#include <stdarg.h>

void TestVprintf(char *format, ...){

  va_list args; // 1. 获取第二个参数里所有的变量

  va_start(args, format);  // 2. 每个变量对应自己的格式

  vprintf(format, args);   // 3. 打印各变量,类比于 printf() 函数

  va_end(args);
}

int main() {

  TestVprintf("%d, %s\n", 2, "arguments");  // 2, arguments

  return 0;
}

        vscanf() 函数和 vprintf() 函数用法相同,所以应该也可以用来改造 scanf() 函数。除此之外,与 scanf() 函数完全一致。

void TestVscanf(char *format, ...){

  va_list args; // 1. 获取第二个参数里所有的变量

  va_start(args, format);  // 2. 每个变量对应自己的格式

  vscanf(format, args);

  va_end(args);
}

int main() {

  int a;
  char b[4];

  TestVscanf("%d %s", &a, b);   // b最多输入三个字符

  TestVprintf("a: %d\nb: %s", a, b);
  // printf("a: %d\nb: %s", a, b);

  return 0;
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 7-3 jmu-java-01入门-格式化输入输出与字符串 这是一篇关于Java编程语言中格式化输入输出和字符串的入门教程。在Java中,格式化输入输出是一种非常重要的技术,可以让我们更加方便地处理数据。同时,字符串也是Java编程中不可或缺的一部分,我们需要学会如何使用字符串来处理文本数据。本教程将介绍Java中的格式化输入输出和字符串的基本概念、语法和用法,帮助初学者快速入门。 ### 回答2: 在计算机编程中,格式化输入输出以及操作字符串是非常常见和重要的技能。在学习JMU-JAVA-01入门课程时,这两个方面也是需要掌握的技能。下面将就这两个方面进行详细阐述。 首先,格式化输入输出是一种将数据按照特定格式输出和输入的技术。在JMU-JAVA-01入门课程中,我们需要学会如何使用System.out.printf()函数进行格式化输出。例如,如果我们要输出一个浮点型变量的值,我们可以使用如下命令: double x = 3.1415926; System.out.printf("%.2f\n", x); 其中,%f是格式化输出中表示浮点数的占位符,.2表示保留两位小数。通过这种方式,我们可以将输出的数据格式更加美观和易读。 另外,在格式化输出中还有一些其他的占位符,如%d表示输出整数,%s表示输出字符串等等。需要注意的是,在使用占位符时,一定要确保要输出的内容和占位符类型匹配,否则程序会出错。 其次,操作字符串也是我们在JMU-JAVA-01入门课程中需要掌握的技能之一。字符串在Javaprogramming中非常重要,我们需要经常对字符串进行各种各样的操作。例如,求字符串的长度、将字符串转换成小写/大写、查找某个字符在字符串中的位置等等。 在Javaprogramming中,字符串是用String类来表示的。我们可以使用String类中的方法来实现对字符串的各种操作。例如,字符串的长度可以使用String.length()方法来获取,转换大小写可以使用String.toLowerCase()、String.toUpperCase()方法来实现。 此外,String类还提供了其他许多操作字符串的方法,如String.charAt()、String.substring()等等。需要注意的是,在进行字符串操作时,一定要注意字符串的不可变性,即原有的字符串不会被修改,而是返回一个新的字符串,因此我们要将返回的新字符串重新赋值给原变量。 总之,在JMU-JAVA-01入门课程中,格式化输入输出和操作字符串是我们需要掌握的两个重要的技能。只有掌握了这些技能,才能更加熟练地进行数据的输入输出和对字符串的操作。 ### 回答3: JMU-Java-01入门-格式化输入输出与字符串,这是学习Java编程语言时必不可少的一部分。在Java编程中,格式化输入输出是指将数据按照一定的格式输出,使数据更加美观、易于阅读。而字符串则是一种常见的数据类型,在Java中,字符串可以用来表示任意字符序列。本文将就这两个方面进行详细的介绍。 格式化输入输出是指将数据按照一定的格式输出。在Java编程中,我们可以使用 System.out.printf() 或者 System.out.format() 方法将结果格式化并输出。使用这两种方法的格式基本一致,只是 System.out.printf() 方法返回值类型为 void,而 System.out.format() 方法返回值类型为 Formatter。 例如下面的代码: ``` double num = 3.141592653589793; System.out.printf("PI is approximately %.2f", num); ``` 输出结果为: ``` PI is approximately 3.14 ``` 其中,%.2f 表示输出一个浮点数,保留两位小数。 除了格式化输出,还可以使用 Scanner 类实现格式化输入。Scanner 类可以让我们从控制台或文件中读取输入,然后将其格式化为不同的数据类型。例如: ``` Scanner sc = new Scanner(System.in); System.out.print("Please enter your name: "); String name = sc.next(); System.out.printf("Your name is %s", name); ``` 输出结果为: ``` Please enter your name: Tom Your name is Tom ``` 字符串是一种常见的数据类型,可以用来表示任意字符序列。在 Java 中,字符串是不可变的,即一旦创建,它的内容就不能被修改。在创建字符串时,可以使用双引号括起来的字符序列,如: ``` String str1 = "Hello, world!"; String str2 = "Java Tutorial"; ``` 除了使用双引号创建字符串外,还可以使用 String 构造函数来创建。例如: ``` String str3 = new String("Hello, world!"); String str4 = new String(new char[]{'J', 'a', 'v', 'a'}); ``` 可以使用 String 类的一些方法来操作字符串,例如获取字符串的长度、连接字符串等。例如: ``` String str5 = "Hello"; String str6 = "World"; System.out.println(str5.length()); // 输出 5 System.out.println(str5.concat(str6)); // 输出 HelloWorld ``` 以上就是关于 JMU-Java-01入门-格式化输入输出与字符串 的详细介绍。学会格式化输入输出和字符串的使用,对于 Java 编程入门和提高都是非常重要的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值