字符串入门和初学字符串常见问题

 勉励自己:**生活百般滋味,人生需要笑对。

前言:

  本项目是笔者刚开始学完字符串后结合自己的总结,和课本以及老师所讲的,总结出来的字符串
  快速入门的一些经典知识,和一道简单的入门题目,希望给大家带来帮助!!

概念部分

    字符在输入时通常用单引号括起来,大部分字符都可以用ascll码来表示,而有一些特殊的字符,
  如换行键,等只能依靠转义序列来表示。并且所有的ASCLL码字符,都可以用数字转义序列来表示

输入问题

   scanf()和getchar()函数都可以用来输入单个字符,但是scanf不会跳过空白符,一般指回车键,
   这时候常用的办法是用getchar();吞噬掉空白格,

样例:先读入整数,在读入字符;
常见有三种办法:

scanf("%d",&n);
getchar();//吞噬空格或者回车
scanf("%c",&ch)
scanf("%d",&n);
scanf("%*%c",&ch)
scanf("%d",&n);
scanf(" %c",&ch)//在%c前加上一个空格

一般情况下第一种情况更好用

字符串

字符串既是字符的数组表达形式,末尾有一个零字符’\0’,只作为标志结尾符,无任何实际意义。

字符串的输入输出和初始化

输入输出

一共有三种方法
1)逐个输入,比较麻烦

for(i=0;i<20;i++)
    scanf("%c",&str[i]);
for(i=0;i!='\0'&&i<20;i++)
    printf("%c",str[i]);

2)以%s格式整体输出,读入回车空格等空白字符时系统自动判定输入结束

    char str[20];
    scanf("%s",str);
    printf("%s",str);

这种方式在输入时无需加地址符,只要输入数组名即可。
3)用gets()和puts()函数输入和输出,但是gets()不能控制输出格式

    char str[20];
    gets(str);
    puts(str);

上述三种中,常用的就是第三种。

初始化

一维数组的定义、引用。初始化方法都适用于字符数组。
样例如下

   char t[5]={'H','A','P','P','Y'};

实战

一个简单的入门题

单词个数统计

样例如下

                  1133: 单词个数统计
 时间限制: 1 Sec  内存限制: 128 MB
题目描述
从键盘输入一行字符,长度小于1000。统计其中单词的个数,各单词以空格分隔,且空格数可以是
多少个。
输入
输入只有一行句子。仅有空格和英文字母构成 
输出
单词的个数 
样例输入 Copy
stable marriage  problem Consists     of Matching members 
样例输出 Copy
7

题解如下

#include<stdio.h>
#include<stdlib.h>
int main ()
{
    char a[1000];//定义字符串
    int sum,b=0,i;
    gets(a);//输入字符串
    for(i=0;a[i]!='\0';i++)
    {
        **if(a[i]!=' '&&a[i+1]==' ')//判断前一个是不是单词**
         b++;
    }
    sum=strlen(a);//strlen是统计字符长度的函数
    **if(a[sum-1]!=' ') //最有一个单词的特殊情况,因为上面那个只能判断到倒数第二个单词**
    b++;
    printf("%d\n",b);
    return 0;
}

常见问题

1.经常把char类型的字符串定义为int类型
2.对gets()函数输入不太掌握,要牢记,括号里只输入数组名即可。
3.忽略对空白字符的处理

好了,今天的文章到这就结束了,我们已经对字符串有了一定的了解,下一步就是自己去学习和刷题啦!

  • 26
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 26
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狗蛋今天也要努力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值