疑问一:我目前使用fgets函数的输入格式是(str , size , stdin ),其中第二项是大小的意思,所以是不是输入多少字符就是多少个字节呢?第三项是否所有情况都是输入stdin呢?

疑问二:在标准的fgets函数中会自动将字符串末尾的'\n'读入,所以在puts时会自动换行。如果是将字符串写入一个字符串数组,我知道如何处理掉末尾的换行符,那如果我使用fgets函数将一个字符串写入一个字符指针,如何将末尾的'\n'处理掉呢?

参考PTA练习13的编程第三题。代码如下:https://onlinegdb.com/95ykND2WbJ

Comments  

+1 # Moderator 2021-12-21 22:02
fgets读取字符串后,如何删除末尾可能有的'\n'

#include (string.h)

char str[SIZE];

fgets(str, SIZE, stdin);
if (str[strlen(str)] == '\n')
str[strlen(str)] = '\0';
# Moderator 2021-12-21 21:55
1,size只要小于等于定义str的长度即可,fgets会少读一个字符,并自动添加'\0'。实际是输 入不超过size - 1个字符。当然一个字符一个字节。因为从键盘输入,标准输入设备,所以是stdin

2,fgets读取字符串时,不做任何转换,'\n'只是当作普通字符看待,当然保存到str中。字符指针,无法保存字符串,除非指向一个字符数组。'\n' 自行处理,找到它,然后置0,即 '\0'。

You have no rights to post comments