将gets()字符串转换为C中的整数
Converting gets() string into an integer in C
我正在尝试编写代码,使用 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
}
}
标准库中有许多实用程序,而不是使用您自己的方法来执行此操作。看看 strol
和 sscanf
。正如上面评论中指出的那样,使用 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);
}
我正在尝试编写代码,使用 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
}
}
标准库中有许多实用程序,而不是使用您自己的方法来执行此操作。看看 strol
和 sscanf
。正如上面评论中指出的那样,使用 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);
}