我的数据阵列中的以下功能有一些蹩脚的价值问题(在我看来就像一些内存位置):阅读()缓冲区有无效数据(指针问题?)
int
GPIO::GetValue() {
char data[1];
if (read(_valuefd, data, 1) < 0) {
perror("Error on reading value fd");
return -1;
}
printf("int GPIO::GetValue() %s\n", data);
if (strcmp(data, "1") == 0) {
return GPIO_VALUE_ON;
}
if (strcmp(data, "0") == 0) {
return GPIO_VALUE_OFF;
}
return -1;
}
的的printf结果:
int GPIO::GetValue() 0cx$??ݾ??˶[email protected]
我不知道是什么在这上面出错了。我在一些简单的程序中提取了相同的代码,可以正常工作。还有一些其他功能GPIO :: GetDirection这是相同的,也工作正常。我想有一些内存,指针,分配问题。
什么问题?
Bodo
我得到格式STRNCMP“%C”需要类型“诠释”的说法,但参数2有类型'char *' – bodokaiser
??!在我的例子中,参数2的类型为'char',它可以很好地用'%c'工作。我只是说明了如何使用'data'实现相同的功能,而不是'char *'。 –