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和一个问号 展开
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和一个问号 展开
展开全部
首先我感觉到的错误是,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只是为了测试分割结果,总之谢谢大佬了,看了你改的之后我知道自己错在哪儿了,谢谢
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询