gpt4 book ai didi

c - C语言编程中的内存

转载 作者:行者123 更新时间:2023-11-30 15:43:46 25 4
gpt4 key购买 nike

嗨,我尝试读取 tkt 输入文件以在我的结构中使用它,它工作正常,但是当我尝试读取值图像或地址或名称时,它是空的有人有什么想法吗?

这是代码:

int nombre_radio(char* fichier_radio)
{
FILE* fichier = NULL;
char buf[TAILLE_MAX_RADIO]="";
int i;

fichier = fopen(fichier_radio, "r");

if (fichier != NULL)
{
i=0;
while (fgets(buf, TAILLE_MAX_RADIO, fichier) != NULL)
{
i++;
}
}

fclose(fichier);
return(i);
}
/* fonction pour récuperer l'image*/
void get_radio(int numero, char* fichier_radio, char* nom, char* adresse, char* image)
{
FILE* fichier = NULL;
char chaine[TAILLE_MAX_RADIO];
int i;
char im_temp[102400];

fichier = fopen(fichier_radio, "r");

if (fichier != NULL)
{
i=0;
while (fgets(chaine, TAILLE_MAX_RADIO, fichier) != NULL && i<numero){i++;}

strcpy(nom, strtok(chaine, "\t"));
strcpy(adresse, strtok(NULL, "\t"));
strcpy(im_temp, strtok(NULL, "\t"));
if (strstr(im_temp, "\n") != NULL)
strncpy(image, im_temp, strlen(im_temp)-1);
else
strncpy(image, im_temp, strlen(im_temp));
}

fclose(fichier);
return;
}

这是读取txt文件并使用它提取图像地址和名称的两个函数我使用这里的功能:

int i;
char fichier_radio[1024];
strcpy(fichier_radio,"liste_radio.txt");
int nombre_Radio = nombre_radio(fichier_radio);

recording_asset *assets = malloc(sizeof(recording_asset) * 5000);

printf("nombre %d",nombre_Radio);
char *adresse = malloc (sizeof (*adresse) * 256);
char *nom = malloc (sizeof (*nom) * 256);
char *image = malloc (sizeof (*image) * 256);



for(i=0; i<nombre_Radio; i++){
get_radio(i, fichier_radio, nom, adresse, image);
printf("image : ",image[i]);
}

最佳答案

  1. 您可以检查一下fclose(fichier);:

    如果fichiernull指针,则不应调用fclose。它会导致未定义的行为,因此可能会解释您所观察到的崩溃。

    您应该将 fclose(fichier); 放入 if (fichier != NULL) 检查条件中。

  2. nombre_radio中,请将i初始化为合适的值,如果fichierNULL,您将返回垃圾值.

关于c - C语言编程中的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19722842/

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