fgets()函数输入字符串(字符数组)
fputs 函数用于将字符串写入到指定的流中。
fgets( ) 函数用于从指定的流中读取一行数据,直到遇到换行符、EOF(文件结束标志)或读取了指定数量的字符为止。
fgets(str, sizeof(str), stdin);
str:指向用于存储输入字符串的字符数组的指针。
sizeof(str):指定最多读取的字符数(包括结尾的空字符 \0)。
stdin:代表输入流,从键盘中输入一个字符。
fgets
函数从键盘中读取最多 n-1
个字符,或者读取到换行符(\n
)或文件末尾(EOF)为止,并将这些字符存储到 str
指向的数组中。读取的字符串将以空字符 \0
结尾。如果成功读取一行,fgets
返回指向 str
的指针;如果读取失败或到达文件末尾,则返回 NULL
。
使用fputs()函数输出字符串(字符数组)
fputs函数用于将一个字符串写入到指定的流中。
fputs(str, stdout);
str:指向要写入流中的字符串的指针。
stdout:代表输出流。
fputs
函数将 str
指向的字符串(不包括结尾的空字符 \0
)写入到 stdout
指向的流中。如果写入成功,fputs
返回非负值;如果发生错误,则返回 EOF
。
以下为具体示例:
输入n行字符串,将其原样输出。
#include <stdio.h>
int main() {
int n;
// 读取字符串的行数
scanf("%d",&n);
getchar();//丢弃换行符'\n'
// 读取并输出每一行的字符串
for (int i = 0; i < n; i++) {
char str[51];
fgets(str,sizeof(str),stdin);
fputs(str,stdout);
}
return 0;
}
注意:
在C语言程序中,getchar()
函数用于从标准输入流(通常是键盘)读取下一个字符,并将其作为int
类型的值返回。如果到达文件末尾或发生读取错误,getchar()
将返回EOF
(通常是-1)。
在给出的代码上下文中,getchar();
被用于读取并丢弃用户输入整数n
后紧跟着的换行符。这是因为当用户在命令行中输入一个整数并按下回车键时,除了整数本身,还会产生一个换行符。这个换行符会留在输入缓冲区中,在调用fgets()
读取字符串之前,如果输入缓冲区中还有未处理的换行符,fgets()
会立即读取这个换行符并认为它已经读取了一行(因为它确实读取了一个换行符,这是行结束的标志)。这会导致程序不能正确地读取用户期望输入的下一行字符串。
因此,在读取整数n
之后调用getchar()
的作用是读取并丢弃这个多余的换行符,从而确保后续的fgets()
调用能够正确地读取用户输入的字符串。
调用 getchar()
,它不接收任何参数,也不将读取到的字符赋给任何变量。这样,换行符就被读取并丢弃了。
简而言之,getchar();
在这里的作用是清除输入缓冲区中由于输入整数而产生的换行符,避免影响后续的字符串读取操作。