| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2445 人关注过本帖
标题:strlen函数使用失效,求解答
取消只看楼主 加入收藏
Feiyiyi1
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2017-10-22
结帖率:62.5%
收藏
已结贴  问题点数:20 回复次数:3 
strlen函数使用失效,求解答
#include <stdio.h>
#include <string.h>
int ershi( int m )
{
    int i;
    char str[100];
    for( i=0;m!=0;i++ ){
        str[i]=m%2;
        m=m/2;
    }
    //str[i+1]='\0';
    puts(str);
           
    int len=strlen(str);     //?????????????                                       
    printf("%d\n",len);

    for(;i>-1;i--)
        printf("%d",str[i]);
}
int main()
{
    int n;
    scanf("%d",&n);
    ershi(n);
    printf("\n");
    return 0;
}
一个十进制转化为二进值的函数:(只限十进制正数的转化)
问题一 :strlen()使用得出的值为0
问题二 :用puts()打印出在字符串时出现乱码
注:我测试的时候输入 25  得二进制 011001
求解答:
搜索更多相关主题的帖子: strlen 函数 str int printf 
2017-10-29 18:10
Feiyiyi1
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2017-10-22
收藏
得分:0 
回复 2楼 pydlq
我把 char换成 int型的  输入25
 len的值 打印任为1

2017-10-30 10:38
Feiyiyi1
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2017-10-22
收藏
得分:0 
回复 4楼 吹水佬
#include <stdio.h>
#include <string.h>
void ershi( int m )
{
    int i;
    char str[100];
    for( i=0; m!=0; i++ )
    {
        str[i]=m%2+'0';                     //把‘\0’转换为0,使得strlen 可以测试通过
                                    //定义的是字符串数组,
                                   //把十进制换算成二进制时出现0时实际上就是出现了'\0'.
        printf("%c\n",str[i]);
        m=m/2;
    }
//    str[i+1]='\0';
//    str[i]='\0'
    puts(str);
    int len=strlen(str);     
    printf("%d\n",len);
    for(--i;i>-1;i--)
        printf("%d",str[i]-'0');
    //for(; i>-1; i--)
    //    printf("%c",str[i]);
}
int main()
{
    int n;
    scanf("%d",&n);
    ershi(n);
    printf("\n");
    return 0;
}
你的代码很好 谢谢你
还有以下的疑问: (输入25)
1,//    str[i+1]='\0';
//    str[i]='\0'
我把这两个任用一个 或者不用 显示len都是 5 这里for循环结束后 就自动加‘\0’结束符了
2,for(--i;i>-1;i--)
    printf("%d",str[i]-'0');
    //for(; i>-1; i--)
    //    printf("%c",str[i]);
这两个任用一个都可以 ,我的我看我理解  ,就是你的for里面  第一个  --i 不是很理解,因为要是换成 拿掉减号就会出现 -4811001
这个-48 我测试了一下  还是不明白:
int main()
{
    char a[20] = "10001100001";
    printf("%d\n%c\n",a[0],a[0]);
    printf("%d\n%c\n",a[1],a[1]);
    return 0;
}

求解答
2017-10-30 11:23
Feiyiyi1
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2017-10-22
收藏
得分:0 
这是我的理解
int main()
{
    char a[20] = "10001100001";
    printf("%d\n%c\n",a[0],a[0]);
    printf("%d\n%c\n",a[1],a[1]);
    return 0;
}
#include <stdio.h>
#include <string.h>
void ershi( int m )
{
    int i;
    char str[100];
    for( i=0; m!=0; i++ )
    {
        str[i]=m%2+'0';              //把‘\0’转换为0,使得strlen 可以测试通过
                                    //定义的是字符串数组,
                                   //把十进制换算成二进制时出现0时实际上就是出现了'\0'.
        printf("%c\n",str[i]);
        m=m/2;
    }
//    str[i+1]='\0';             //后面的'\0'是c编译器自动加上去的
//    str[i]='\0'                //http://
    puts(str);
    int len=strlen(str);
    printf("%d\n",len);
    i=i-1;
    for(;i>-1;i--)
        printf("%d",str[i]-'0');   //
    //for(; i>-1; i--)
    //    printf("%c",str[i]);
}
int main()
{
    int n;
    scanf("%d",&n);
    ershi(n);
    printf("\n");
    return 0;
}
2017-10-30 12:44
快速回复:strlen函数使用失效,求解答
数据加载中...
 
   



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

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