c语言中,输出的第二个字符串首字符为问号,求大神解答

之前的代码就不复制了,复制过来没有啥意义inti=0;charNum1[32],Num2[32];Text=5;while(*(n+i)!='\0'){switch((i... 之前的代码就不复制了,复制过来没有啥意义
int i=0;
char Num1[32],Num2[32];
Text=5;
while(*(n+i)!= '\0')
{
switch((int)*(n+i))
{
case 42: Text=3;i++;break;
case 43: Text=1;i++;break;
case 45: Text=2;i++;break;
case 47: Text=4;i++;break;
case 48:
case 49:
case 50:
case 51:
case 52:
case 53:
case 54:
case 55:
case 56:
case 57:
case 65:
case 66:
case 67:
case 68:
case 69:
case 70:
case 72:
case 79: Text=Text;break;
default: Text=0;
}
if(Text!=0)
{
if(Text==5)
{
Num1[i]=*(n+i);
Num1[i+1]='\0';
}
else
{
Num2[i-strlen(Num1)]=*(n+i);
Num2[i-strlen(Num1)+1]='\0';
}
}
else
{
break;
}
i++;
}

puts(Num1);
puts(Num2);
然后我输入1+1,结果输出的是1和一个问号
展开
 我来答
1259049661
2018-11-22 · TA获得超过1552个赞
知道小有建树答主
回答量:333
采纳率:88%
帮助的人:212万
展开全部

首先我感觉到的错误是,case + - * / 里面做了i++然后后面if又做了一遍,重复了。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    int i = 0;
    char Num1[32] = {'\0'}, Num2[32] = {'\0'};
    int Text;
    char n[3] = {'1', '+', '1'};
    while(*(n+i)!= '\0')
    {
        Text = 5;
        switch((int)*(n+i))
        {
            case 42: Text=3;break; // + - * /
            case 43: Text=1;break;
            case 45: Text=2;break;
            case 47: Text=4;break;
            case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:
            case 56:case 57:case 65:case 66:case 67:case 68:case 69:case 70:case 72:
            case 79: Text=Text;break;
            default: Text=0;
        }
        if(Text!=0)
        {
            if(Text==5)
            {
                Num1[strlen(Num1)]= *(n+i);
                Num1[strlen(Num1)]= '\0';
            }
            else
            {
                Num2[strlen(Num2)]= *(n+i);
                Num2[strlen(Num2)]= '\0';
            }
        }
        i++;
    }
    puts(Num1);
    puts(Num2);
    return 0;
}

还有一个不知道什么的原因是,莫名其妙,Num2,默认非空,我给它赋值之后就为空了。

同时声明的Num1,Num2,同时puts,结果1是空的,而前面有3个字符,莫名其妙。

因为我不知道你要干什么,我改了以下,输出是这个:

追问
我的目的是把大的字符串拆成两个,随后传递给下一个函数,puts只是为了测试分割结果,总之谢谢大佬了,看了你改的之后我知道自己错在哪儿了,谢谢
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式