我想从popen pass转换为浮点数作为最终结果。我试图转换为字符,然后以各种可能的方式转换为浮点数,但是我看到使用printf的输出每次似乎都是错误的。我曾尝试使用tostring函数,以及在printf函数中使用返回正确函数的%s,但是,当我尝试转换输出时,它似乎都会给我错误的输出。我应该尝试一种不同的转换方法吗?为什么C中的转换方法继续失败?
这是代码。从PY
FILE * uname;
char os[80];
int lastchar;
char n;
uname = popen("sudo python ./return63.py", "r");
lastchar = fread(os, 1, 80, uname);
os[lastchar] = "\0";
n = toString(("%s", os));
printf("THE DIRECT OUTPUT FROM PY IS %s", os);
printf("THE DIRECT OUTPUT For n IS %c", n);
float ia = n - 0;
long p = ia - 0;
float dd = p - 0;
printf("Your OS is %f", dd);
输出是 '直接输出FROM PY IS 63.0',这是正确的值,从第n 输出 '直接输出对于N是'
从输出dd是'你的操作系统是你的操作系统是236.000000'
功能tostring是从一个回答问题拉如何从另一个回答的问题得到输出。我曾尝试过,没有这个代码。
int toString(char a[]) {
int c, sign, offset, n;
if (a[0] == '-') { // Handle negative integers
sign = -1;
}
if (sign == -1) { // Set starting position to convert
offset = 1;
}
else {
offset = 0;
}
n = 0;
for (c = offset; a[c] != '\0'; c++) {
n = n * 10 + a[c] - '0';
}
if (sign == -1) {
n = -n;
}
return n;
}
'lastchar'未初始化 - 它看起来像你用'stchar'你应该使用'lastchar'吗? (另外,为了将来的参考,你应该为可能失败的呼叫添加错误检查,例如'popen'。) –
你是完全正确的,我忘了我在那里,我一直在寻找其他转换方式,而我没有在正确的地方。将编辑帖子。谢谢! – Johnnyman
请按照[此处](http://stackoverflow.com/help/mcve)的说明提供更好的示例。在你展示的代码中没有'stchar'这样的变量。 'toString'的功能目的对我来说还不清楚。 – pbn