C语言获取整行输入的多种方法
在C语言中,有多种方法可以实现从标准输入流(stdin)中读取整行输入;最常见的方法是使用例如fgets()
、scanf()
、getchar()
这些函数;
方法一:使用fgets()函数
fgets()
函数可以从指定的文件中读取一行数据,常用于从标准输入读取用户的输入;
fgets()
函数需指定最大字符数,当读取到文件结束符或读取到指定的最大字符数时,fgets()
会停止读取;
示例代码
#include <stdio.h>
int main() {
char input[10];
fgets(input, 10, stdin);
printf("输入的字符串为:%s\n", input);
}
程序运行结果
123456789abcdefg
输入的字符串为:123456789
这个示例中,输入的字符超数量过了10个,所以fgets()
函数只读取了9个字符(还需存放'\0'
字符);
方法二:使用scanf()函数
scanf()
函数可以从标准输入中读取指定格式的数据,可以使用%s
格式符来读取一行字符串;
scanf()
函数读取的字符串包含换行符,可以使用%[^\n]
格式符来消除换行符;
示例代码
#include <stdio.h>
int main() {
char input[255];
scanf("%[^\n]", input);
printf("输入的字符串为:%s\n", input);
}
程序运行结果
123 456 abc
输入的字符串为:123 456 abc
方法三:使用getchar()函数
getchar()
函数可以从标准输入读取一个字符,通过循环读取字符直到读取到换行符时停止来实现整行读取;
示例代码
#include <stdio.h>
int main() {
char input[255];
int i = 0;
int c = getchar();
while (c != '\n') {
input[i++] = c;
c = getchar();
}
input[i] = '\0';
printf("输入的字符串为:%s\n", input);
}