标题:程序出现错误
只看楼主
持剑的战士
Rank: 1
等 级:新手上路
帖 子:30
专家分:3
注 册:2019-12-6
结帖率:62.5%
已结贴  问题点数:20 回复次数:1 
程序出现错误
#include<stdio.h>
#include<string.h>
int main()
{
    char a[500],b[500],maxT[200],minT[200];
    int i=0,f=0,j=0,len,max=-1,min=500;
    gets(a);
    while(a[i]!='\0')
    {
        if(a[i]==' ')
        {
            if(f==1)
            {
                b[j]='\0';
                len=strlen(b);
                if(len>max)
                {
                    max=len;
                    strcpy(maxT,b);
                }
                if(len<min)
                {
                    min=len;
                    strcpy(minT,b);
                }

                f=0;
                j=0;
            }   
        }
        else
        {
            b[j]=a[i];
            j++;
            f=1;
        }
        i++;
    }
    b[j]='\0';
    len=strlen(b);
    if(len>max)
    {
        max=len;
        strcpy(maxT,b);
    }
    if(len<min)
    {
        min=len;
        strcpy(minT,b);
    }
    printf("%s\n%s\n",maxT,minT);
    return 0;
}
这是寻找一行字符串中最长最短单词的程序,是可以成功运行的。但是我有一个问题,如果我不定义int型len,直接用strlen(b)带入进去,
                b[j]='\0';
                if(strlen(b)>max)
                {
                    max=strlen(b);
                    strcpy(maxT,b);
                }
                if(strlen(b)<min)
                {
                    min=strlen(b);
                    strcpy(minT,b);
                }
程序运行结果就出错了,只会输出最短单词,而输出的最长单词是乱码的,请问这是什么原因呢?
搜索更多相关主题的帖子: min 出现 strlen strcpy max 
2019-12-22 13:32
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:705
专家分:2043
注 册:2010-11-11
得分:20 
strlen函数返回值是size_t类型的,而size_t类型的定义如下:typedef unsigned int size_t;,所以size_t本质上是个无符号整数。如果将一个unsigned int类型的数值赋值给一个int类型的变量时,若数值大于INT_MAX,则int类型变量的值会成负数。没有具体看你的代码,依据你最后的描述,猜测时这个原因。
2019-12-22 16:49



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-498551-1-1.html




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

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