這個問題你可以寫兩個小函數(shù)來實現(xiàn) , 一個是atoi()函數(shù),就是把字符串轉(zhuǎn)化成int型,另一個是itoa(),就是把int型的數(shù)字轉(zhuǎn)化成字符串。剛開始時用atoi()把str1,str2轉(zhuǎn)化成整形數(shù),然后相加,再把相加后的結(jié)果用itoa()函數(shù)轉(zhuǎn)化成字符串,再賦值給result。這是個思路,那兩個函數(shù)也不太難,自己嘗試實現(xiàn)一下。
創(chuàng)新互聯(lián)專注于恩陽網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供恩陽營銷型網(wǎng)站建設(shè),恩陽網(wǎng)站制作、恩陽網(wǎng)頁設(shè)計、恩陽網(wǎng)站官網(wǎng)定制、重慶小程序開發(fā)公司服務(wù),打造恩陽網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供恩陽網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
#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;
}
大整數(shù)的計算可以通過模運算來進行簡化,也可以將其作為字符串讀入,然后分段運算之后再進行拼接。
附:
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
);
}
輸出結(jié)果:
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函數(shù)總是得不到數(shù)據(jù),很郁悶。。。*/
/*輸入:任意字符(*除外),再空格,緊接著繼續(xù)輸入一系列
數(shù)字,數(shù)字之間為一個空格,回車結(jié)束本次輸入,
若輸入*則停止輸入。*/
/*輸出:想要處理的字符串,用atoi函數(shù)處理后得到的數(shù)據(jù)。*/
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用來判斷是否輸入結(jié)束*/
while((ch=getchar())!='*')
{
gets(member[i].str);
i++;j++;
}
/*這個for用來通過atoi得到數(shù)據(jù),問題出在這里。。。*/
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");
}