将gets()字符串转换为C中的整数

时间:2015-03-11 12:08:52

标签: c gets

我正在尝试编写使用gets()读取数字字符串的代码,然后将所述字符串转换为整数。但是我的转换出了问题,我无法弄清楚是什么。 我还必须使用gets()来执行此操作。 如果有人能看到什么错误或知道更好的方法,请帮助。

感谢。

#include <stdio.h>
#include <math.h>
int main()
{
   char s[1000];
   int n = 0;
   printf("Input the number you wish to have converted\n");//asks the user to enter the number they want converted
   gets(s);//reads the input

   for (int i = 0; i < length; i++)
   {
      char temp = s[i] - '0';
      n = n + pow(10, length - i - 1) * temp;//converts from a character array to an integer for decimal to binary conversion
   }
}

1 个答案:

答案 0 :(得分:3)

标准库中有许多实用程序,而不是使用您自己的方法来执行此操作。请查看strolsscanf。如上面的评论中所指出的,使用fgets代替gets也是明智的。

示例

#include <stdio.h>
#include <stdlib.h>
int main()
{
    char s[1000];
    int n = 0;
    printf("Input the number you wish to have converted\n");//asks the user to enter the number they want converted
    fgets(s, sizeof(s), stdin);//reads the input

    n = (int)strol(s, NULL, 10);
    printf("Number from strol: %d\n", n);

    sscanf(s, "%d", &n);
    printf("Number from sscanf: %d\n", n);
}

如果您不想保留字符串,您甚至可以绕过fgets并使用scanf

#include <stdio.h>
int main()
{
    int n;
    scanf("%d", &n);
    printf("Number from scanf: %d\n", n);
}