【发布时间】:2022-01-09 21:31:06
【问题描述】:
我试图用字符串填充二维数组,问题是我设法填充第一个索引,但是当我继续下一个字符串时,它会不断更改以前的索引。可能是指针的问题,这是相关代码。
char* get_song_name(const char* song)
{
strip(song);
FILE* fp = fopen(song, "r");
char str[9999];
while(!feof(fp))
{
fgets(str,9999,fp);
puts(str);
strip(str);
char* s = str;
return s;
}
` DIFFERENT FUNCTION:
for(i=0;i<lines;i++)
{
char *st = fgets(buff, 250, fp);
st = create_path("c:\\Users\\Marian\\Desktop\\beatles", st);
name[i] = get_song_name(st); //WORKS HOWEVER CHANGES PRVIOUS INDEXES VALUE TOO
}`
【问题讨论】:
-
get_song_name一遍又一遍地打开同一个文件,每次从头读取一行并返回它。更糟糕的是,它返回一个指向本地str数组的指针,该变量的生命周期将在函数返回时结束,从而使返回的指针无效。
标签: c pointers scope return-value undefined-behavior