📜  用不同的编程语言格式化说明符

📅  最后修改于: 2021-05-20 06:34:32             🧑  作者: Mango

在C中格式化:


在C语言格式中,指定符用于输入和输出。这是一种告诉编译器在使用scanf()进行输入或使用printf()进行输入的过程中变量中包含哪种类型的数据的方法。以下是C语言中的一些格式说明符:

  • %d或%i:整数格式说明符
  • %c:字符格式说明符
  • %f:浮点格式说明符。
  • %s:字符串格式说明符。
  • %lf:双格式说明符。
  • %e或%E:浮点格式说明符(指数)。

在C编程中,我们将scanf()用于格式化的输入,将printf()用于格式化的输出,将gets()或getchar()用于未格式化的输入,将puts()或putchar()用于未格式化的输出。

下面是说明C语言中一些格式说明符的程序:

// C program to illustrate format
// specifiers in C
#include 
  
// Driver Code
int main()
{
    int N = 10;
    double F = 42.152;
  
    // Integer formatted output
    printf("%d \n", N);
  
    // Exponential formatted output
    printf("%e \n", F);
  
    // Unformatted String Output
    puts("Welcome to GeeksforGeeks!");
}
输出:
10 
4.215200e+01 
Welcome to GeeksforGeeks!

在C++中格式化:


由于C++是C语言的扩展,但是我们仍然使用输入和输出流来格式化输入或输出。以下是C++中使用的一些输入/输出:

  1. 标准输入流(cin):在C++中, cinistream的对象。它从标准输入设备(例如键盘)获取输入。 cin与提取运算符( >> )一起使用,以获取或接收字符流。
  2. 标准输出流(cout):在C++中, cout是ostream的对象。它用于将输出打印到标准输出设备,即Monitor。 cout与插入运算符( << )一起使用。如果我们用“ENDL”它会产生一个字符就像“\ n”,但它也有一个附加的行为即输出将被物理地写入设备,如果它是不是已经。它会影响完全缓冲的流,但是cout不会被完全缓冲,因此,将endl与cout一起使用是一个好习惯。
  3. 无缓冲标准错误流(cerr):在C++中, cerr是ostream的对象。 cerr与插入运算符( << )一起使用。与缓冲输出不同,非缓冲输出不断将数据写入磁盘。在可能导致系统崩溃的严重错误中,不建议使用缓冲输出。但是cerr速度很慢,因为它不断将数据写入磁盘。
  4. 缓冲标准错误流(clog):在C++中, clog用于记录目的。它是ostream的对象。 clog与插入运算符( << )一起使用。在某些情况下,缓冲输出比无缓冲输出更有效。如果是缓冲输出,则所有输出错误都存储在一个变量中,并且一次全部写入磁盘。

以下是一些输入/输出流功能:

  • setw()或width():用于将宽度设置为给定值。输出将以给定的宽度显示。
  • setprecision()或precision():在浮点值中,如果我们需要设置要在小数点后打印的多个值。
  • setiosflags():用于设置标志以格式化输出。
  • setfill()或fill():用于填充字段的空白。
  • resetiosflags():用于删除已设置的标志。

下面是说明C++中一些格式流的程序:

// C++ program to illustrate format
// specifiers in C++
#include 
using namespace std;
  
// Driver Code
int main()
{
  
    string str = "GeeksforGeeks!";
  
    // Output stream to print string
    cout << str << endl;
  
    float f = 12.4578452f;
    // Print floating value upto N digits
    cout << setprecision(4) << f << endl;
  
    // To print the hexadecimal value of 42
    cout << hex << 42 << endl;
    return 0;
}
输出:
GeeksforGeeks!
12.46
2a

用Java格式化:


在Java,可以两种不同的方式格式化输出:

  • System.out.printf():与print()和println()不同,它接受多个参数,因为print()println()接受单个参数。
  • System.out.format():printf()相似。 printf()和format()都属于Java.io包的PrintStream。这个printf()format()与C语言中的printf()函数相似,我们也可以将标志与格式说明符一起使用。

下面是说明Python一些格式说明符的程序:

// Java program to illustrate
// some format specifiers
  
import java.util.Scanner;
import java.io.PrintStream;
  
// Class Main
public class Main {
  
    // Driver Code
    public static void main(String[] args)
    {
  
        Scanner sc = new Scanner(System.in);
  
        // Name and Age
        String name = "GeeksforGeeks";
        int age = 5;
  
        // Formatted String using printf()
        System.out.printf(
            "Name: %s, Age: %d",
            name, age);
  
        System.out.println();
  
        // Formatted String using format()
        System.out.format(
            "%nName: %s%nAge: %d%n",
            name, age);
    }
}
输出:
Name: GeeksforGeeks, Age: 5

Name: GeeksforGeeks
Age: 5

用Python格式化:

Python是目前使用最广泛的多功能高级编程语言。它是一种动态语言,非常易于格式化。 Python的 input()函数始终返回字符串,通过将它们转换为我们所需的数据类型,我们可以执行不同的操作。

  • 未格式化的说明符: Python的print()函数用于打印在此函数传递的参数。我们可以使用sep参数来使用分隔符打印传递的参数。
  • 格式化说明符:对于格式化输出,我们在print()函数中使用Python中的format()函数格式化输出。
    对于字符串格式, Python使用C风格的字符串格式来创建新的格式化字符串。 “%”运算符用于格式化列表中包含的一组变量以及格式字符串,该字符串包含普通文本以及“自变量说明符”,特殊符号(如“%s”和“%d”)。

下面是说明Python一些格式说明符的程序:

# Python program to illustrate
# format specifiers in Python
  
str = "GeeksforGeeks"
str1 = "Welcome to"
  
# Unformatted Output in Python
print("Welcome to GfG !")
  
# Unformatted Output using seperator
# print("Welcome to GfG !", sep = ", ")
print(str1, str, sep = ", ");
  
# String Formatting
print("Welcome to % s !" % str);
  
# String Formatting
name = "GfG"
age = 4
print("% s is % d years old." % (name, age))
  
# Formatting using format()
print("Hey, Welcome to {}!".format(str, age))
输出:
Welcome to GfG !
Welcome to, GeeksforGeeks
Welcome to GeeksforGeeks!
GfG is  4 years old.
Hey, Welcome to GeeksforGeeks!