| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 567 人关注过本帖
标题:c语言统计一下输入一段字符,包含空格的,统计一下每个小字符串的长度,和有 ...
只看楼主 加入收藏
NeQhk
Rank: 2
等 级:论坛游民
威 望:1
帖 子:164
专家分:85
注 册:2014-7-19
结帖率:69.23%
收藏
已结贴  问题点数:20 回复次数:7 
c语言统计一下输入一段字符,包含空格的,统计一下每个小字符串的长度,和有几个小字符串。
比如输入abcd efghw  hiik
有三个小字符串,长度是4 5 4
怎么弄好
搜索更多相关主题的帖子: 字符串 c语言 统计 
2015-01-08 12:28
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:7 
给你一段代码,你上面的要求 可以自己添加

程序代码:
/*
程序功能:从键盘接收字符串输入,然后以行为单位 转存至文件
         然后从文件中提取所录入的字符串  并有序输出至屏幕
         单个字符长度不能超过255  
         控制台录入以*****(5连*)作为结束标记
         排序算法:冒泡
*/

#include <stdio.h>
#include<stdlib.h>
#include<string.h>


int main()
{    
    FILE *fp; 
    char str[256]={'\0'};
    char ** dstr=NULL;
    int cout=0;
    int i,j;
    char * tmp;
    if((fp=fopen("d:\\123.txt","w"))==NULL)
    { 
        printf("打开文件失败!\n"); 
        return 0;
    } 
    //接受键盘输入并保存到指定文件
    while(1)
    {
        scanf("%s",str);
        if(strcmp(str,"*****")==0) break;   //人为限定为以5连*作为输入结束标记
        fprintf(fp,"%s\n",str);
        cout++;
    }
    //打开曾输入的字符串的文件,为排序输出做准备工作
    fclose(fp); 
    fp=fopen("d:\\123.txt","rb");
    if(fp==NULL)
    { 
        printf("打开文件失败!\n"); 
        return 0;
    } 
    //为字符串分配空间
    dstr=(char**)malloc(cout*sizeof(char*));
    for(i=0;i<cout;i++) 
    {
        dstr[i] = (char *)malloc(sizeof(char)*256);
        memset(dstr[i],0,sizeof(dstr[i]));  
    }
    //从文件扫描到字符串指针
    for(i=0;i<cout;i++)
    {
        fscanf(fp,"%s",*(dstr+i));
    }
    //以下双循环是字符串排序部分
    for(i=0;i<cout;i++)
    {
        for(j=i;j<cout;j++)
        {
            
            if(strcmp(*(dstr+i),*(dstr+j))>0)
            {
                tmp=*(dstr+i);
                *(dstr+i)=*(dstr+j);
                *(dstr+j)=tmp;
            }

        }
    }
    //排序后输出
    printf("-------------------------\n");
    for(i=0;i<cout;i++)
    {
        printf("%s\n",*(dstr+i));

    }
    fclose(fp); 
    free(dstr);
    return 0;
}


DO IT YOURSELF !
2015-01-08 13:08
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:7 
逻辑上是很简单的.
程序代码:
#include <stdio.h>

int main()
{
    for( unsigned strcount=0, substrsize=0, last_is_space=1; ;  )
    {
        int c = getchar();

        if( c==EOF || c=='\n' || c==' ' )
        {
            if( !last_is_space )
            {
                printf( "%u ", substrsize );
                ++strcount;
                substrsize = 0;
                last_is_space = 1;
            }
            if( c==EOF || c=='\n' )
            {
                printf( "Count=%u\n", strcount );
                break;
            }
        }
        else
        {
            ++substrsize;
            last_is_space = 0;
        }
    }

    return 0;
}

2015-01-08 15:24
NeQhk
Rank: 2
等 级:论坛游民
威 望:1
帖 子:164
专家分:85
注 册:2014-7-19
收藏
得分:0 
回复 2楼 wp231957
谢谢了。。
2015-01-08 16:42
NeQhk
Rank: 2
等 级:论坛游民
威 望:1
帖 子:164
专家分:85
注 册:2014-7-19
收藏
得分:0 
回复 2楼 wp231957
dstr=(char**)malloc(cout*sizeof(char*));
这一句能给解释下吗?
2015-01-08 17:59
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用NeQhk在2015-1-8 17:59:06的发言:

dstr=(char**)malloc(cout*sizeof(char*));
这一句能给解释下吗?



为字符串指针分配空间  下面的循环是为字符串分配空间  一个字的区别

DO IT YOURSELF !
2015-01-09 08:48
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:7 
回复 3楼 rjsp
按你给出的代码我试了一下
有个疑问想请版主讲解一下
图片附件: 游客没有浏览图片的权限,请 登录注册

Only the Code Tells the Truth             K.I.S.S
2015-01-09 09:09
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:0 
再补两张图
图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册

Only the Code Tells the Truth             K.I.S.S
2015-01-09 09:11
快速回复:c语言统计一下输入一段字符,包含空格的,统计一下每个小字符串的长度 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025322 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved