怎么是错的啊,高手来看看。

来源:百度知道 编辑:UC知道 时间:2024/05/05 14:53:13
#include "stdio.h"
main()
{
char str[20];
long i=0,sum=0,flag=1;
scanf("%s",str);
if (*str=='-')
{flag=-1;
str++;
}

while(*str!='\0')
{
i=*str-'0';
sum=sum*10+i;
str++;}
printf("%ld\n",sum*flag);
}

我不觉得它有错。。。

str是数组的首地址没错,但是它并不是一个指针型变量,不能做++操作,应该这么写..
main()
{
char str[20];
char *p=str;
long i=0,sum=0,flag=1;
scanf("%s",str);
if (*p=='-')
{flag=-1;
p++;
}

while(*p!='\0')
{
i=*p-'0';
sum=sum*10+i;
p++;}
printf("%ld\n",sum*flag);
}