这可能是一个菜鸟问题,但我现在正在努力解决这个问题 2 天,但无法让它发挥作用; 我正在向所有软件添加调试日志,但无法解决这个问题。 这里会发生什么? (抱歉可能是菜鸟问题)
这部分简直要了我的命;
#define MAX_LINE_LEN 1000
int hlsconfdata;
hlsconfdata=0;
f = fopen("/data/.hlsconf", "r");
if (!f)
{
ALOGI("Error opening config file ");
}
else
{
char line[MAX_LINE_LEN];
while (fgets(line, MAX_LINE_LEN, f))
{
hlsconfdata = (int)line;
ALOGI("Got HLS config set to: (%s)", (char*)hlsconfdata);
}
if (!feof(f))
{
ALOGI("Error reading HLS config file ");
}
}
fclose(f);
int count;
count = hlsconfdata + 1;
ALOGI("Processing Config for configuration: (%s)", (char*)hlsconfdata);
ALOGI(">>>>>>>>>>>>>>add 1: (%s)", (char*)count);
if (hlsconfdata == 0)
{
ALOGI(">>>>>>>>>>>>>>>>>> got 0");
}
else if (hlsconfdata == 1)
{
ALOGI(">>>>>>>>>>>>>>>>>> got 1");
}
else if (hlsconfdata == 2)
{
ALOGI(">>>>>>>>>>>>>>>>>> got 2");
}
else if (hlsconfdata == 3)
{
ALOGI(">>>>>>>>>>>>>>>>>> got 3");
}
else
{
ALOGI(">>>>>>>>>>>>>>>>>> got NOTHING");
}
日志输出:
Got config set to: (2) Processing Config for configuration: (2)
>>>>>>>>>>>>>>add 1: ()
>>>>>>>>>>>>>>>>>> got NOTHING
所以hlsconfdata
在转换为char时有一个值。
当加 1 或将其作为整数进行比较时,它没有值(或其他值)
有人可以解释一下吗?
请注意,这是添加了 android AOSP 源代码(如果了解这一点很重要的话)。
最佳答案
根据评论,该文件似乎应该包含整数的文本表示形式,并且您希望将其转换为整数。
如果是这样,则更改此:
hlsconfdata = (int)line;
ALOGI("Got HLS config set to: (%s)", (char*)hlsconfdata);
对此:
hlsconfdata = atoi(line);
ALOGI("Got HLS config set to: (%d)", line);
并更改此:
ALOGI("Processing Config for configuration: (%s)", (char*)hlsconfdata);
ALOGI(">>>>>>>>>>>>>>add 1: (%s)", (char*)count);
对此:
ALOGI("Processing Config for configuration: (%d)", hlsconfdata);
ALOGI(">>>>>>>>>>>>>>add 1: (%d)", count);
使用强制转换表明您可能做错了什么。 (int)line
的作用是将line
的内存地址转换为整数。它不会读取存储在 line
中的字符。
您的原始代码似乎部分有效,因为您将 line
的地址存储在 int 中,然后通过转换回 char *
再次检索它,因此 %s
说明符查找 line
的内容。但是,当您对中间的 int 执行 +1
时,您会遇到麻烦,因为您不再检索原始缓冲区(事实上,您可能会检索指向缓冲区第二个字符的指针,从而导致显示的行没有第一个字符)。
另一个问题是您的 while
循环读取整个文件,但它会用下一行覆盖每一行,因此您会显示大量 “Got HLS config set to:”
(假设文件有多于 1 行),但您实际上只使用文件的最后一行。
关于C - 不能使用整数来 char* 工作。加1不。有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28426809/