如何使用atoi()获得负值?

时间:2017-06-02 13:32:34

标签: c atoi

我写了这段代码来获得反向形式的数字。但如果我使用任何负输入,它会显示正反转数字。 C中的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;
}

2 个答案:

答案 0 :(得分:2)

在上一次printf之前提出这一行:

if ( atoi( ar ) < 0 ) fnum = -fnum;

答案 1 :(得分:1)

您可以使用strstr(haystack, needle)将其转换为负数。

#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++;
}
if(strstr(ar, "-"))
    fnum= - atoi(ar2);
else
    fnum= atoi(ar2);
printf("%d",fnum);
return 0;
}