扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
这个问题你可以写两个小函数来实现 , 一个是atoi()函数,就是把字符串转化成int型,另一个是itoa(),就是把int型的数字转化成字符串。刚开始时用atoi()把str1,str2转化成整形数,然后相加,再把相加后的结果用itoa()函数转化成字符串,再赋值给result。这是个思路,那两个函数也不太难,自己尝试实现一下。
创新互联专注于恩阳网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供恩阳营销型网站建设,恩阳网站制作、恩阳网页设计、恩阳网站官网定制、重庆小程序开发公司服务,打造恩阳网络公司原创品牌,更为您提供恩阳网站排名全网营销落地服务。
#include stdio.h
int atoi(const char *s);
int main(void)
{
printf("%d\n",atoi("-1234"));
return 0;
}
int atoi(const char *s)
{
int sign=1,n;
if(*s=='+'||*s=='-')
{
if(*s=='-')
{
sign=-1;
}
++s;
}
for(n=0;*s='0'*s='9';++s)
{
n=n*10+*s-'0';
}
return sign*n;
}
大整数的计算可以通过模运算来进行简化,也可以将其作为字符串读入,然后分段运算之后再进行拼接。
附:
atoi和itoa的示范代码如下:
#include
stdlib.h
#include
stdio.h
void
main(
void
)
{
char
*s;
int
ix;
char
buffer[20];
int
i
=
3445;
long
l
=
-344115L;
unsigned
long
ul
=
1234567890UL;
s
=
"
-9885
pigs";
/*
Test
of
atoi
*/
ix
=
atoi(
s
);
printf(
"atoi
test:
ASCII
string:
%s\t\tinteger:
%d\n",
s,
ix
);
_itoa(
i,
buffer,
10
);
printf(
"String
of
integer
%d
(radix
10):
%s\n",
i,
buffer
);
_itoa(
i,
buffer,
16
);
printf(
"String
of
integer
%d
(radix
16):
0x%s\n",
i,
buffer
);
_itoa(
i,
buffer,
2
);
printf(
"String
of
integer
%d
(radix
2):
%s\n",
i,
buffer
);
_ltoa(
l,
buffer,
16
);
printf(
"String
of
long
int
%ld
(radix
16):
0x%s\n",
l,
buffer
);
_ultoa(
ul,
buffer,
16
);
printf(
"String
of
unsigned
long
%lu
(radix
16):
0x%s\n",
ul,
buffer
);
}
输出结果:
atoi
test:
ASCII
string:
-9885
pigs
integer:
-9885
String
of
integer
3445
(radix
10):
3445
String
of
integer
3445
(radix
16):
0xd75
String
of
integer
3445
(radix
2):
110101110101
String
of
long
int
-344115
(radix
16):
0xfffabfcd
String
of
unsigned
long
1234567890
(radix
16):
0x499602d2
你把main中的int *q改成char *q
#includestdlib.h
#includestdio.h
/*是这样的,我用atoi函数总是得不到数据,很郁闷。。。*/
/*输入:任意字符(*除外),再空格,紧接着继续输入一系列
数字,数字之间为一个空格,回车结束本次输入,
若输入*则停止输入。*/
/*输出:想要处理的字符串,用atoi函数处理后得到的数据。*/
typedef struct test
{ char str[80];
int data[80];
}TEST;
int main()
{
int i=0,j=0,k=0,m;
char *q;
char ch;
TEST member[80];
/*这个while用来判断是否输入结束*/
while((ch=getchar())!='*')
{
gets(member[i].str);
i++;j++;
}
/*这个for用来通过atoi得到数据,问题出在这里。。。*/
for(i=0;i=j;i++)
{ k=0;
q=member[i].str+1;
member[i].data[k]=atoi(q);
here:while(*q!=' '*q!='\0')
q++;
q++;
k++;
if(*(q-1)!='\0')
{
member[i].data[k]=atoi(q);
goto here;
}
}
/*这是输出部分*/
for(k=0;kj;k++)
{
printf("***********************************************************\n");
printf("No.%d string is :",k+1);
puts(member[k].str);
printf("The began three numbers in No.%d string are :",k+1);
for(m=0;m3;m++)
printf("%3d ",member[k].data[m]);
printf("\n");
printf("***********************************************************\n");
printf("\n");
}
printf("Press any key to get back...\n");
}
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流