gpt4 book ai didi

c++ - Visual C++ 的奇怪错误

转载 作者:太空宇宙 更新时间:2023-11-03 10:20:47 25 4
gpt4 key购买 nike

好的,这是我到目前为止的代码

int main()
{
char buffer[10];
int arraySize = -1;
FILE *fp;
int i;
char filename[10];
int userNo = 1;
char stockArray[18][15];
sprintf(filename, "file%d", userNo);
fp = fopen(filename, "r");
while(fgets(buffer, 30, fp) != NULL)
{
if(buffer[0] == '<' && buffer[1] == 's')
{
arraySize++;
}
else if(buffer[0] == '<' && buffer[1] == '/'){printf("< char\n");}
else
{
int t = 0;
int r = 0;
while(buffer[t] != '>')
{
t++;
}
t++;
char holder[15] = {'\0'};
while(buffer[t] != '<')
{
holder[r] = buffer[t];
t++;
r++;
}
strncpy(stockArray[arraySize], holder, r);
printf("%s\n", stockArray[arraySize]);
}
}
fclose(fp);
}

我遇到了两个奇怪的问题。首先,当我执行 printf 语句时,它会打印正确的数据,然后执行以下操作:如果第一个单词是“banana”,下一个是“123”,它会打印“123ana”,然后是一堆奇怪的字符结尾是一张笑脸,我不骗你。

然后,在程序完成并完成后,我收到“运行时检查失败 #2 - 变量‘文件名’周围的堆栈已损坏。”错误。

我使用的是 VS2010 和 C++,到目前为止我的所有经验都是使用 GCC 和 C,我以前从未遇到过这些问题。任何建议将不胜感激

最佳答案

你的输入缓冲区是 10 个字符长

char buffer[10];

但随后您告诉 fgets 将最多 30 个字符读入缓冲区

fgets(buffer, 30, fp)

这可能会产生“有趣”的效果!

关于c++ - Visual C++ 的奇怪错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6003189/

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