关于string转换的问题
想把字符串中单位的数字和双位的数字加起来,gcc下面有Segmentation Fault (core dumped)的提示,这个是啥问题阿?请教各位
高手帮忙看一下.
int main()
{
char barcode[]="123456789";
int number=atoi(barcode)
int oddsum=barcode[0]+barcode[2]+barcode[4]+barcode[6]+barcode[8];
int evensum=barcode[1]+barcode[3]+barcode[5]+barcode[7];
printf("%s\n",oddsum);
printf("%s\n",evensum);
printf("%s\n",barcode);
}
问题点数:20、回复次数:4Top
1 楼lj860603(跑吧,键键)回复于 2006-10-02 18:45:42 得分 10
int oddsum=barcode[0]+barcode[2]+barcode[4]+barcode[6]+barcode[8];
==============》
int oddsum=(barcode[0] - '0')+(barcode[2]-'0')+(barcode[4]-'0')+(barcode[6]-'0')+(barcode[8]-'0');
int evensum=barcode[1]+barcode[3]+barcode[5]+barcode[7];
也一样改成上面的形式。Top
2 楼lj860603(跑吧,键键)回复于 2006-10-02 18:46:03 得分 0
printf("%s\n",oddsum);
printf("%s\n",evensum);
printf("%s\n",barcode);
===============》
printf("%d\n",oddsum);
printf("%d\n",evensum);
printf("%s\n",barcode);
Top
3 楼Jokar(贪睡鼠)回复于 2006-10-02 18:49:15 得分 10
Segmentation Fault的原因 是 int形态的变量却以 %s(字符串)的格式输出了;比如printf("%s\n",oddsum); oddsum是int型的,却以%s的格式想让printf作输出~
改成 printf("%d\r\n", oddsum);就可以了,不过这也得不到正确的结果, 因为oddsum所得的是数字字符的ascii码的和,这个和真正的数字的值相差了 48~呵呵
lz要做出相应的调整才行~Top
4 楼avonuts()回复于 2006-10-02 19:01:45 得分 0
To Jokar(贪睡鼠★御姐控☆小宠王)
多谢,最后结果的确如此,能不能给我一些提示阿,比如格式的转换。
TO lj860603(键键
thanx very much, it is working on gcc complier.Top




