| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2183 人关注过本帖
标题:求代码,谢谢各位
只看楼主 加入收藏
狼狈
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-6-17
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:10 
求代码,谢谢各位
写一个函数,传入一个字符串,统计其中字母、数字、分隔符(空格、tab符、回车)和其他字符的个数,通过形参传回。主函数要求读入一个文本文件中的所有内容作为字符串,交给上述函数进行统计,并在主函数中打印统计结果。输入文件见text.txt。谢谢
搜索更多相关主题的帖子: 文本文件 字母 统计 字符串 
2017-06-17 14:46
peng880610
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:128
专家分:123
注 册:2017-3-29
收藏
得分:10 
#include <stdio.h>
#include <stdlib.h>
void dis(char str[])
{
    int i=0;
    char letter,separator,number,other;
    while(str[i++])
    {
        if(str[i]>='A' && str[i]<='Z' && str[i]>='a' && str[i]<='z')
        {
            letter++;
        }
        else if(str[i]=='\n' || str[i]=='    ' ||str[i]==' ')
        {
            separator++;
        }
        else if(str[i]>='0' && str[i]<='9')
        {
            number++;
        }
        else
        {
            other++;
        }
    }
    printf("字母的个数为:%d\n",letter);
    printf("分隔符的个数为:%d\n",separator);
    printf("数字的个数为:%d\n",number);
    printf("其它的字符个数为:%d\n",other);
}

int main()
{
    char letter,separator,number,other;
    FILE* fpI=NULL;
    char a[500]={'0'};
    char FileA[20];
    printf("要从哪个文件读入字符串?\n");
    gets(FileA);
    //FILE *fpI=NULL;
    fpI=fopen(FileA,"rt");
    if(fpI==NULL)
    {
        printf("输入文件打开失败");
        exit(0);
    }
    if(fgets(a,sizeof(a),fpI)==NULL)
    {
        printf("字符串读取失败");
        exit(0);
    }
    dis(a);
    fclose(fpI);
    return 0;
}

我这个不知道错哪里,求帮忙看看
2017-06-17 16:02
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:5 
对上面的代码有三个问题
1.读取文件的文件名路径是否正确
2.读取文件的单次处理量和处理次数是否能完成全部解析任务
3.存放文件内容的数组长度是否恰当

剑栈风樯各苦辛,别时冰雪到时春
2017-06-17 16:25
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:2 
回复 楼主 狼狈
以下是引用狼狈在2017-6-17 14:46:59的发言:
主函数要求读入一个文本文件中的所有内容作为字符串,

这个文件有多大?
2017-06-17 16:31
peng880610
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:128
专家分:123
注 册:2017-3-29
收藏
得分:0 
回复 3楼 林月儿
还是没找出问题在哪里,能编译,但运行结果不对
2017-06-17 18:59
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:3 
拿去,不需要知道字符串长度的读取函数。

https://bbs.bccn.net/thread-475272-1-1.html

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-06-17 19:06
狼狈
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-6-17
收藏
得分:0 
回复 4楼 吹水佬
老师把一个程序的代码放进了记事本里,这就是文件。要求统计此文件里的数字个数,字母个数。。。
2017-06-17 20:58
狼狈
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-6-17
收藏
得分:0 
回复 2楼 peng880610
感谢你的代码  我改了一下又问了一下老师
这是改后能运行的:
#include<stdio.h>
#include<stdlib.h>
void sort(char s[],int *a,int *b,int *c,int *d)
{
    int i;
    char *p=s;
    for(i=0;*(p+i)!='\0';i++)
    {
        if(p[i]>='A' && p[i]<='Z'||p[i]>='a'&& p[i]<='z')
            (*a)++;
        else if(p[i]>='0' && p[i]<='9')
            (*b)++;
        else if(p[i]==' '||*p=='\t'||*p=='tab')
            (*c)++;
        else (*d)++;
    }
}
int main()
{
    FILE *fp;
    char s[1000]={0};
    int i=0, alpha=0, digit=0, brk=0, other=0;
    if ((fp=fopen("d:\\text.txt","rb"))==NULL)
    {
        printf("无法打开此文件\n");
        exit(0);    }
    while(!feof(fp))
    {
        s[i++]=fgetc(fp);
    }
    sort(s, &alpha, &digit, &brk, &other);
    printf("字母:%d\n数字:%d\n空格键:%d\n其他字符:%d\n",alpha,digit,brk,other);
    fclose(fp);
    return 0;
}
2017-06-17 21:03
狼狈
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-6-17
收藏
得分:0 
回复 2楼 peng880610
那个tab不能用\t来表示
2017-06-17 21:54
peng880610
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:128
专家分:123
注 册:2017-3-29
收藏
得分:0 
回复 9楼 狼狈
还是你这个代码清楚,简洁。多谢分享。
2017-06-18 00:12
快速回复:求代码,谢谢各位
数据加载中...
 
   



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

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