gpt4 book ai didi

c - 为什么 C 程序(.exe)停止工作?

转载 作者:行者123 更新时间:2023-11-30 21:16:18 25 4
gpt4 key购买 nike

我尝试访问 .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

最佳答案

假设结束 ] 中存在拼写错误,并将其分开,

  strcpy(arr[i], buffer];

arr[i] 此处未初始化。尝试写入未初始化的内存调用 undefined behaviour .

解决方案:在使用arr[i]之前,您需要为其分配内存。您可以看看malloc()以及用于动态内存分配的函数系列。

FWIW,您可能想看看free()还有。

关于c - 为什么 C 程序(.exe)停止工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31428635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com