字符串(字符数组)的输入和输出

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();在这里的作用是清除输入缓冲区中由于输入整数而产生的换行符,避免影响后续的字符串读取操作。

  • 18
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值