PTA 7-32说反话 20行代码超简单strtok函数秒题方法分享(C语言)


代码: 


#include <stdio.h>
#include <string.h>
int main () {
   char s[600000];
   gets(s);
   char *p[600000];
   long long i=0;
   p[i]=strtok(s," ");
   while(p[i]!=NULL)
   {
       i++;
       p[i]=strtok(NULL," ");
   }
   for(long long j=i-1;j>=0;j--)
  {
      if(j==0)  printf("%s",p[j]);
      else  printf("%s ",p[j]);
  }
   return 0;
}

题目:



解题思路:

    此题需要将含有若干个空格分布的不超过500000长度的字符串拆分为若干个单词并倒序输出.

对于字符串的处理这里用到了一个包含在string.h里面的函数strtok函数,它可以将字符串按特定分隔符进行切割,这里分割为设置为“ ”(空格)。

第一步:

   创建字符数组并储存输入的字符串:

         char s[600000];   因为字符串长度算上\0就超过了给定长度,定义数组长度一定超过500000
         gets(s);

第二步:

   创建字符串指针(strtok函数用到),使用一次strtok函数:

         char *p[600000];  这里的p[x]用来储存每一个分割出来的单词

         int i=0;       (记录切割出单词的个数)
         p[i]=strtok(s," ");       使用strtok函数对字符串进行第一次切割

   这里简单介绍下strtok函数的用法:

             strtok(待处理部分,“切割的符号” )   返回的是切割出来的部分字符串

             用p[i]装入切出来的单词

第三步:

    切割剩下的部分:

        while(p[i]!=NULL)        当切割的字符串的不为空
   
       i++;                                切割的单词数加一
       p[i]=strtok(NULL," ");   把切下来的单词装入字符指针数组p里
   

第四步:

   倒序打印:

 for(int j=i-1;j>=0;j--)
  {
      if(j==0)
      {
          printf("%s",p[j]);
      }
      else
      printf("%s ",p[j]);
  }

总结:

   通用过使用strtok函数将字符串分割装入数组中,再反向输出每个单词。

   

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值