11.29学到的简单知识

fgets简单使用方法:fgets(接受的变量,长度,stdin),长度如果是20,那么只能输入19个。返回值是这个接收到的内容的指针。stdin表示从键盘接收内容。

strchr简单使用方法:strchr(字符串,字符),返回这个字符第一次出现在这个字符串位置的指针,如果不在其中,就返回一个空指针。

数组定义后,再给数组赋值,要使用strcpy。使用方法strcpy(数组名,内容);

数组输入字符串后,最后一个因为按了回车表示输入完毕,所以数组的最后一个字符会有一个'\n'。如果printf时用这个数组,然后后面加上其余字符,会自动换行,影响美观,所以需要使用strchr来找出数组中的'\n'进行替换,确保在printf输出时不会出现多余的换行。

#include <stdio.h>
#include <string.h>
#define M 41
#define X 31
char * s_gets(char * st,int n);
struct book{
    char title[M];
    char author[X];
    float value;
};
int main(){
    struct book library;
    printf("请输入书名:\n");
    s_gets(library.title,M);
    printf("输入新书的作者:\n");
    s_gets(library.author,X);
    printf("请输入它的价格:");
    scanf("%f",&library.value);
    printf("%s by %s: $%.2f\n",library.title,library.author,library.value);
    printf("%s:\"%s\"($%.2f)\n",library.author,library.title,library.value);
    printf("Done.\n");
    return 0;

char * s_gets(char * st,int n){
    char * ret_val;
    char * find;
    ret_val=fgets(st,n,stdin);
    if(ret_val){//替换掉数组中的换行符,确保printf输出的时候不会自动换行
        find = strchr(st,'\n');
        if(find){
            *find = '\0';
        }else{
            while(getchar() != '\n')
                continue;
        }
        
    }
    return ret_val;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值