我尝试访问并将.ini文件中的数据存储到我的main
程序中的数组中。为了验证数据是否真正存储,我还将它们打印出来(它们似乎是正确的)。但是,每次我运行主程序时,它都会执行,然后会出现一个弹出窗口,指出.exe文件已停止工作。有人可以看看并告诉我出了什么问题。
.ini文件是:
[key]
title= A,H,D
C程序:
var[100];
LPCSTR ini="C:\conf.ini";
GetPrivateProfileString("key", "title", 0, var, 100,ini);
int i=0;
char* arr[10];
char* buffer;
for(buffer=strtok(var, ",");buffer;buffer=strtok(NULL, ","))
{
if (buffer !=NULL)
{
puts("")
strcpy(arr[i], buffer);
printf("the value is %S \n", arr[i]);
i++;
}
}
printf("first value %s", arr[0]);
printf("second value %s", arr[1]);
printf("third value %s", arr[2]);
输出我看起来像这样:
The value is A
The value is H
The value is D
first value A
second value H
third value D
答案 0 :(得分:4)
假设在结束]
中输入错误,并将其分开,
strcpy(arr[i], buffer];
arr[i]
在这里未初始化。尝试写入未初始化的内存会调用undefined behaviour。
解决方案:在使用arr[i]
之前,您需要为此分配内存。您可以查看malloc()
和动态内存分配函数系列。
FWIW,你可能也想看看free()
。