标题:两个gets输入字符串,再用strlen测长度结果不正确的问题
只看楼主
troyzyc
Rank: 1
等 级:新手上路
帖 子:108
专家分:0
注 册:2016-7-4
结帖率:56.6%
 问题点数:0 回复次数:4 
两个gets输入字符串,再用strlen测长度结果不正确的问题
#include<stdio.h>
#include<string.h>

int main()
{
    char a[10];
    char b[4];
    gets(a);
    gets(b);
    int alen=strlen(a);
    int blen=strlen(b);
    printf("%d\n",alen);
   
    return 0;
}
输出结果为什么是下边的样子:
输入:1fdgre
输入:2efr
输出:0,4          难道不应该是6,4吗?

搜索更多相关主题的帖子: gets 输入 strlen 结果 int 
2018-02-19 23:20
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
溢出,
gets早就被C/C++废弃了,用fgets
2018-02-19 23:31
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
这样看看:

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

int main()
{
    char a[10];
    char b[4];
    gets(a);
    gets(b);
    int i;
    for (i=0; i<4; ++i)
        printf("%p\t%d\t%c\n", &b[i],b[i],b[i]);
    for (i=0; i<10; ++i)
        printf("%p\t%d\t%c\n", &a[i],a[i],a[i]);
    return 0;
}

[此贴子已经被作者于2018-2-20 04:59编辑过]

2018-02-20 04:55
troyzyc
Rank: 1
等 级:新手上路
帖 子:108
专家分:0
注 册:2016-7-4
得分:0 
回复 3楼 吹水佬
3q,明白了
2018-02-20 09:21
troyzyc
Rank: 1
等 级:新手上路
帖 子:108
专家分:0
注 册:2016-7-4
得分:0 
回复 2楼 rjsp
好,我试试
2018-02-20 09:21



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




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

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