跳到主要内容

C语言编程入门之格式化输入

在C语言中,输入数据的主要方法是通过标准输入函数,比如scanfgetchargets等。常见的输入方式包括从键盘读取用户输入,并将其存储到变量中。

1. scanf 函数

scanf是C语言中最常用的输入函数,允许从标准输入(通常是键盘)获取格式化的输入。

scanf 语法:

scanf("格式控制符", &变量1, &变量2, ...);
  • 格式控制符:用于指定要读取的数据类型。
  • 变量地址:必须传入变量的地址,以便scanf将输入的数据存储在变量中。用符号&来获取变量的地址。

常用的格式控制符:

  • %d:读取整数。
  • %f:读取浮点数。
  • %lf:读取双精度浮点数(double)。
  • %c:读取单个字符。
  • %s:读取字符串(不带空格的字符串)。

示例:

#include <stdio.h>

int main() {
int age;
float height;
char grade;

printf("Enter your age: ");
scanf("%d", &age); // 读取整数并存储到变量age

printf("Enter your height: ");
scanf("%f", &height); // 读取浮点数并存储到变量height

printf("Enter your grade: ");
scanf(" %c", &grade); // 读取字符并存储到变量grade
// 注意:在读取字符之前留空格,避免之前的换行符影响输入

printf("Age: %d, Height: %.2f, Grade: %c\n", age, height, grade);

return 0;
}

注意事项:

  • scanf读取字符串时,%s只读取非空格部分,遇到空格或换行就会停止读取。
  • 在读取字符类型(%c)输入时,建议在之前使用空格以跳过换行符或其他空白字符。

2. getchar 函数

getchar函数用于从标准输入读取单个字符。它不需要格式化输入,直接返回读取到的字符。

getchar 语法:

char ch = getchar();

示例:

#include <stdio.h>

int main() {
char ch;

printf("Enter a character: ");
ch = getchar(); // 读取一个字符

printf("You entered: %c\n", ch);

return 0;
}

注意:

  • getchar每次只读取一个字符。
  • 在读取完字符后,用户必须按下回车键才能结束输入。

3. gets 函数(不推荐使用)

gets函数用于从标准输入读取一行字符串,直到遇到换行符为止。它会读取包括空格的所有字符并存储到字符串中。

gets 语法:

gets(字符数组);

示例:

#include <stdio.h>

int main() {
char name[50];

printf("Enter your name: ");
gets(name); // 读取一行字符串

printf("Your name is: %s\n", name);

return 0;
}

缺点:

gets函数存在缓冲区溢出的风险,容易导致安全问题,因为它无法限制读取的字符数量。为了避免这种风险,C11标准已弃用gets,建议使用更安全的fgets

4. fgets 函数(推荐使用)

fgets函数是gets的安全替代方案,允许指定最大读取字符数,避免缓冲区溢出问题。

fgets 语法:

fgets(字符数组, 数组大小, stdin);
  • 字符数组:存储输入字符串的数组。
  • 数组大小:要读取的最大字符数。
  • stdin:表示从标准输入读取。

示例:

#include <stdio.h>

int main() {
char name[50];

printf("Enter your name: ");
fgets(name, sizeof(name), stdin); // 安全地读取字符串

printf("Your name is: %s", name); // 注意fgets会保留换行符

return 0;
}

注意:

  • fgets会保留输入的换行符,如果需要,可以手动去除。

5. 输入多个数据

可以通过scanf在一次输入中获取多个数据:

#include <stdio.h>

int main() {
int a, b;

printf("Enter two integers: ");
scanf("%d %d", &a, &b); // 读取两个整数

printf("You entered: %d and %d\n", a, b);

return 0;
}

总结:

  • scanf是C语言中最常用的格式化输入函数,用于读取各种类型的数据。
  • getchar用于读取单个字符。
  • fgets是安全的字符串输入函数,推荐用于读取字符串。
编程实战1990公众号二维码

10年软件开发经验,分享编程零基础入门教学文章视频,小项目从0到1开发迭代升级流程。 分享如何通过技术做出产品源源不断的进行盈利。关于我,学习更多编程知识。