제 컴파일 환경은 C89 표준이고, bool 유형이 없어서 int 유형을 inNumber로 직접 재정의한 것입니다.
#includelt;
#includelt;
int sumInt(char *s)
{ int sum=0, t=0; char *p=s; int inNumber=0;? //inNumber를 음수로 표시합니다. //문자열에서 양수와 음수를 꺼내서 합합니다. while(*(p -1 )!='\0') //마지막 숫자도 얻을 수 있음이 보장됩니다. { if('0'lt;=*pamp;amp;*plt;='9') //? 이 숫자를 t에 넣습니다. {
t=10*t *p-48;? // t*10은 carry -48과 동일하며 문자 '0'을 '9로 변환합니다. '를 0부터 9까지의 숫자로 변환< /p>
if(*(p-1)=='-') //음수인 경우
inNumber=1 } else / /숫자가 아니면 이전 t를 합계에 더하고 t를 지웁니다. {
if(inNumber==1)? //음수입니다
t =-t;
sum=sum t;
t=0;
inNumber=0 } p; return sum;
< p>}int main()
{ char s[1000 1]; gets(s) printf("d\n", sumInt(s)); ;
}
< p>원래 질문을 따른다면 두 주석 사이에 코드를 추가할 수 있습니다:while(*(p-1)!=' \0') { if('0'lt;=*pamp ;amp;*plt;='9')? {
t=10*t *p-48;
< p>if(*(p-1)=='-' )?inNumber=true; } else? {
if(inNumber=true)
< p>t=-t;sum =sum t;
t=0
inNumber=false }
< p>sum=sum t;
여기에 문장을 추가할 수 있습니다
printf("d\n", t);
< p>t 값의 변화를 관찰하면 실행 중인 프로세스를 더 잘 이해할 수 있습니다.