有人可以帮助我(对不起英语),我试图将字符串转换成双字符串,但是当我无法得到它时,我的代码(谢谢,我会非常感谢帮助):
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX_LONG 5
char bx[MAX_LONG];
double cali=0;
int main() {
scanf("%c",bx);
cali = strtod(bx,NULL);
printf("%f",cali);
return 0;
}
当我在输出中输入大于10的值时,它只打印第一个数字,如下所示:
input: 23
output: 2.00000
input: 564
output: 5.00000
答案 0 :(得分:2)
你使用的scanf()
说明符是错误的,除非你指定了多个字符,但是数组不会被nul
终止,我建议如下
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char bx[6]; /* if you want 5 characters, need an array of 6
* because a string needs a `nul' terminator byte
*/
double cali;
char *endptr;
if (scanf("%5s", bx) != 1)
{
fprintf(stderr, "`scanf()' unexpected error.\n");
return -1;
}
cali = strtod(bx, &endptr);
if (*endptr != '\0')
{
fprintf(stderr, "cannot convert, `%s' to `double'\n", bx);
return -1;
}
printf("%f\n", cali);
return 0;
}
答案 1 :(得分:0)
您应该尝试进行此更改以使其正常工作。
第一: 改变
scanf("%c",bx); /*Here you're reading a single char*/
对此:
scanf("%s",bx);/*Now you're reading a full string (No spaces)*/
第二: 变化
cali = strtod(bx,NULL);
对此:
cali = atof(bx);
我认为这对您来说是完美的。