| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2240 人关注过本帖
标题:函数调用 在字符串前添加一个字符“1”,总是不能将字符串返回 新手,请指教 ...
只看楼主 加入收藏
佐特
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2019-11-5
结帖率:0
收藏
已结贴  问题点数:20 回复次数:12 
函数调用 在字符串前添加一个字符“1”,总是不能将字符串返回 新手,请指教
程序代码:
#include <macro.h>
#include <string.h>
#include <stdlib.h>
int Bin2I(char h[10])
{
    char i[10]={0};
    float  k=1;
    float sum=0;
    int m=strlen(h);
    int s=0;
    int t=0;  
    for(s==0;s<m;s++)      //交换
       {
          i[s]=h[m-1-s];         
        }
    for(t=0;t<m;t++)
       {
          sum=sum+(i[t]-'0')*k;
          k=k*2;
        }
    return(sum);
}
char xiuzhengzhi(char x[10])
{
    int length;
    int i;
    length=strlen(x);
    char zifuchuan1[length+1];
    char zifuchuan2[length+1];
    zifuchuan1[0]='1';
    for(i=0;i<length;i++)
       {
          zifuchuan1[i+1]=x[i];
       } 
    return    zifuchuan1[length+1];
}
int MacroMain()
{
    // Here to add macro code.
    char zifuchuan3[10];
    char zifuchuan4[10];
    float Fxiuzhengzhi;
    int sum1;
    int h=1;
    int j=255;
    int yihuo1;
    int l=0;
    GetMem(zifuchuan3,@字符串1@,0,10);
    zifuchuan4[10]=xiuzhengzhi(zifuchuan3);
    GetMem(zifuchuan4,@字符串2@,0,10);
    sum1=Bin2I(zifuchuan4);
    yihuo1=(sum1^j)+h;
    Fxiuzhengzhi=(l-yihuo1)/15;
    SetWord(@数值0@,0,sum1);
    SetWord(@数值1@,0,yihuo1);
    SetFloat(@数值2@,0,Fxiuzhengzhi);
    return 0;
}



[此贴子已经被作者于2019-11-5 14:41编辑过]

搜索更多相关主题的帖子: 字符串 sum length char int 
2019-11-05 14:26
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:20 
你最起码要贴出 怎么调用的代码 吧?
2019-11-05 14:32
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:0 
去掉你代码中的杂质,即得
char xiuzhengzhi( const char x[] )
{
    size_t length = strlen(x);
    char zifuchuan1[length+1];
    zifuchuan1[0] = '1';
    for( size_t i=0; i<length; ++i )
        zifuchuan1[i+1] = x[i];

    return zifuchuan1[length+1];
}
对于 zifuchuan1 这个数组而言,它的元素有 zifuchuan1[0]、zifuchuan1[1]、zifuchuan1[2]、……、zifuchuan1[length],没有 zifuchuan1[length+1]
所以 return zifuchuan1[length+1] 是未定义行为。
2019-11-05 14:42
佐特
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2019-11-5
收藏
得分:0 
回复 2楼 rjsp
我把整个程序都贴出来,由于是在触摸屏内部的脚本
2019-11-05 14:42
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:0 
回复 4楼 佐特
明白了,你想返回一个数组,这不可以。
而且你想返回一个数组,却写的是返回一个字符,接受也用的是一个字符。


[此贴子已经被作者于2019-11-5 15:12编辑过]

2019-11-05 14:44
佐特
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2019-11-5
收藏
得分:0 
回复 5楼 rjsp
这个调用函数是为了在一个字符串前添加一个字符“1”,然后再把添加过后的字符串返回去
2019-11-05 14:46
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:0 
回复 6楼 佐特
Bin2I 好改
程序代码:
unsigned Bin2I( const char* s ) // 二进制字符串 转 整型数值
{
    unsigned r = 0;
    for( ; *s; ++s )
        r = r*2 + (*s-'0');
    return r;
}

xiuzhengzhi 看起来也不难,但不知道你是怎么使用的(也就是看不懂函数 MacroMain 的逻辑),不敢改。

函数 MacroMain 看起来非常奇怪
    zifuchuan4[10]=xiuzhengzhi(zifuchuan3);
    GetMem(zifuchuan4,@字符串2@,0,10);
似乎欲将 xiuzhengzhi(zifuchuan3) 的结果保存到数组中 zifuchuan4,可是根本没用到它,下一句就将它重新置值了。
2019-11-05 15:00
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:0 
一切都非常诡异
    int h=1;
    int j=255;
    int l=0;
    ……
    yihuo1=(sum1^j)+h; // 这个看起来似乎认定 sum1 小于 256,然后求 sum 的负值。那为何不直接 yihuo1 = -sum ?
    Fxiuzhengzhi=(l-yihuo1)/15; // 为何不直接 Fxiuzhengzhi = sum1/15 ?
2019-11-05 15:05
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:0 
关于你的 xiuzhengzhi,我不知道你想怎么改,我只能举个例子:
程序代码:
#include <stdio.h>
#include <string.h>

void xiuzhengzhi( const char* src, char* dst )
{
    *dst = '1';
    strcpy( dst+1, src );
}

int main( void )
{
    char a[10] = "012345678";
    char b[11];
    xiuzhengzhi( a, b );

    puts( b ); // 应当输出 1012345678
}

2019-11-05 15:11
佐特
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2019-11-5
收藏
得分:0 
回复 9楼 rjsp
bin2i没问题,可以正常运行,就是xiuzhengzhi的函数没法把处理好的字符串传送回去
2019-11-05 15:34
快速回复:函数调用 在字符串前添加一个字符“1”,总是不能将字符串返回 新手, ...
数据加载中...
 
   



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

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