C语言基础(五)

C语言输入输出函数主要依赖于标准输入输出库stdio.h。最常用的输入输出函数:

输出函数
printf():向标准输出设备(通常是屏幕)输出格式化的字符串。可以根据指定的格式输出整数、浮点数、字符、字符串等。
puts():输出一个字符串,并在末尾自动添加一个换行符。不接受格式说明符。
putchar():输出单个字符。
输入函数
scanf():从标准输入设备(通常是键盘)读取格式化的输入。可以读取整数、浮点数、字符、字符串等,并根据指定的格式进行解析。
gets()(gets()函数在C11标准中被移除,它可能导致缓冲区溢出):用于从标准输入读取一行文本,直到遇到换行符(换行符会被丢弃),但不包括在存储的字符串中。由于安全问题,建议使用fgets()代替。
fgets():从指定的流中读取一行,直到遇到换行符、文件结束符EOF或已读取了n-1个字符为止,并将读取的字符串(包括换行符)存储在数组中。
getchar():从标准输入读取下一个可用的字符,并将其作为无符号字符(unsigned char)转换为int返回。

使用scanf()时,变量前的&符号,表示取变量的地址。
printf()和scanf()中的格式说明符(如%d、%f、%s等)用于指定如何解释传递给函数的参数。
读取字符串时,fgets()比gets()更安全,它允许指定缓冲区的大小,从而避免缓冲区溢出。
输出换行通常使用\n转义字符。

测试代码1:

#include <stdio.h>  
#include <string.h> // 用于strlen函数  
int main() {  
    char name[50];  
    char ch;  
    int age;  
    // printf输出  
    printf("请输入您的名字:");  
  
    // fgets读取一行输入(包括空格,直到换行符或缓冲区满)  
    fgets(name, sizeof(name), stdin);  
    // fgets读取的换行符  
    name[strcspn(name, "\n")] = 0;  
    // puts输出(自动添加换行符)  
    puts("您好,");  
    puts(name);  
    // printf格式化输出  
    printf("请输入您的年龄:");  
    // scanf读取整数  
    scanf("%d", &age);  
    // printf和putchar格式化输出  
    printf("您%d岁了。\n", age);  
    putchar('\n'); // 输出换行符  
    // getchar读取单个字符  
    printf("请按任意键继续...");  
    ch = getchar(); // 读取一个字符  
    // getchar()处理缓冲区中的换行符(如果getchar之前读取了输入)  
    while (getchar() != '\n'); // 消耗直到换行符的所有字符 
    printf("您按下了 '%c'。\n", ch);  
    return 0;  
}

运行结果如下:

 

测试代码2:

#include <stdio.h>  
int main() {  
    int decimalInt, octalInt, hexInt, skipInt;  
    unsigned int unsignedInt;  
    float floatNum;  
    double doubleNum;  
    long double longDoubleNum;  
    char charVar, str[50];  
    short shortInt;  
    long long longLongInt;  
  
    // 读取十进制整数  
    printf("Enter a decimal integer: ");  
    scanf("%d", &decimalInt);  
  
    // 读取八进制整数  
    printf("Enter an octal integer: ");  
    scanf("%o", &octalInt);  
  
    // 读取十六进制整数  
    printf("Enter a hexadecimal integer: ");  
    scanf("%x", &hexInt);  
  
    // 读取并忽略一个整数  
    printf("Enter an integer to skip: ");  
    scanf("%*d", &skipInt);
  
    // 读取无符号整数  
    printf("Enter an unsigned integer: ");  
    scanf("%u", &unsignedInt);  
  
    // 读取浮点数  
    printf("Enter a float: ");  
    scanf("%f", &floatNum);  
  
    // 读取双精度浮点数  
    printf("Enter a double: ");  
    scanf("%lf", &doubleNum);  
  
    // 读取扩展双精度浮点数  
    printf("Enter a long double: ");  
    scanf("%Lf", &longDoubleNum); // %Lf中的L是大写  
  
    // 读取单个字符  
    printf("Enter a character: ");  
    scanf(" %c", &charVar); // 注意前面的空格以跳过任何前导空白符  
  
    // 读取字符串  
    printf("Enter a string: ");  
    scanf("%49s", str); // 限制读取49个字符以留出空间给'\0'  
  
    // 读取短整型  
    printf("Enter a short integer: ");  
    scanf("%hd", &shortInt); // %hd用于short int  
  
    // 读取长长整型  
    printf("Enter a long long integer: ");  
    scanf("%lld", &longLongInt); // %lld用于long long int  
  
    // 输出读取的数据  
    printf("Decimal integer: %d\n", decimalInt);  
    printf("Octal integer: %o\n", octalInt);  
    printf("Hexadecimal integer: %x\n", hexInt);  
    printf("Unsigned integer: %u\n", unsignedInt);  
    printf("Float: %f\n", floatNum);  
    printf("Double: %lf\n", doubleNum);  
    printf("Long double: %Lf\n", longDoubleNum);  
    printf("Character: %c\n", charVar);  
    printf("String: %s\n", str);  
    printf("Short integer: %hd\n", shortInt);  
    printf("Long long integer: %lld\n", longLongInt);  
  
    return 0;  
}

运行结果如下:

 

测试代码3:

#include <stdio.h>  
int main() {  
    int decimalInt = 123;  
    unsigned int unsignedInt = 456;  
    float floatNum = 3.14159f;  
    double doubleNum = 3.141592653589793;  
    char charVar = 'A';  
    char str[] = "Hello, World!";  
    unsigned int hex = 0x1A;  
    unsigned int oct = 012;  
    void *ptr = &decimalInt; // 指针  
  
    // 输出十进制整数  
    printf("Decimal integer: %d\n", decimalInt);  
  
    // 输出无符号整数  
    printf("Unsigned integer: %u\n", unsignedInt);  
  
    // 输出浮点数  
    printf("Float: %f\n", floatNum);  
  
    // 输出双精度浮点数  
    printf("Double: %lf\n", doubleNum);  
  
    // 输出单个字符  
    printf("Character: %c\n", charVar);  
  
    // 输出字符串  
    printf("String: %s\n", str);  
  
    // 输出十六进制整数  
    printf("Hexadecimal integer: %x\n", hex);  
  
    // 输出八进制整数  
    printf("Octal integer: %o\n", oct);  
  
    // 输出指针地址(注意转换为void*)  
    printf("Pointer address: %p\n", ptr);  
  
    // 输出%字符本身  
    printf("%% character: %%\n");  
  
    // 控制输出宽度和对齐  
    printf("Right-aligned integer (width 5): %5d\n", decimalInt);  
    printf("Left-aligned integer (width 5): %-5d\n", decimalInt);  
    
    return 0;  
}

运行结果如下:

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值