gpt4 book ai didi

c - 如何修复来自/lib/libc.so.1的strcpy()中的#0 0xfeea5b41

转载 作者:行者123 更新时间:2023-11-30 19:42:10 26 4
gpt4 key购买 nike

我想读取一个文件并将其存储在列表中。我确实这样做了,但是当我使用 gdb 时,我收到此错误:

#0  0xfeea5b41 in strcpy () from /lib/libc.so.1.

这是代码:

int
main (int argc, char *argv[])
{
/*declare and initialise variable */
char array[10][150], buffer[150];
//message =(char*)malloc(sizeof(char));
int i = 0;
FILE *fp;
fp = fopen (argv[1], "r");
if (fp == 0)
{
fprintf (stderr, "Input not valid\n");
exit (1);
}
/*stores and prints the data from the string */
int counter = 0;
while (fgets (buffer, 150, fp))
{
strcpy (array[i], buffer);
//printf(" %s",message[i]);
i++;
counter++;
}
fclose (fp);
return 0;
}

最佳答案

这里有几个问题。

  1. 如果超过 10 行,则会溢出 array ,以及 strcpy将尝试复制到无效位置。我预计这就是该错误的原因。

  2. fopen出错时返回一个指针(因此 NULL ),而不是 0。

  3. 您没有检查 fgets 的返回值;它返回NULL出错时。

  4. 递增counteri似乎多余,因为它们都具有相同的值。

  5. 您还没有#include d 相关的包含文件,这样你的 C 编译器就不会选择正确的函数原型(prototype)。您需要:#include <stdio.h> , #include <stdlib.h>#include <string.h> 。您可以通过使用 gcc -Wall 进行编译来找到它。 .

关于c - 如何修复来自/lib/libc.so.1的strcpy()中的#0 0xfeea5b41,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32698888/

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