我写了这段代码来获得一个反向形式的数字。但是,如果我使用任何负面的输入,它显示正反向数字。 C中的atoi函数可以处理否定吗?如何通过使用atoi()获得负值?
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(void){
char ar[40];
char ar2[40];
int fnum;
scanf("%s",ar);
for(int i=strlen(ar)-1,j=0;i>=0;i--){
ar2[j]=ar[i];
j++;
}
fnum=atoi(ar2);
printf("%d",fnum);
return 0;
}
与你的问题无关,但你在哪里终止'ar2'?请记住,'char'字符串实际上被称为***空终止的**字节字符串*。 –
至于你的问题,在一个包含负数的字符串中,哪里是负号?倒转后,负号字符在哪里? –
你的循环是倒退的。如果输入的是正数,它也会反向打印。这是故意的吗?负数将显示为正数,因为'-'发生在字符串的末尾,不被视为数字的一部分。 –