gpt4 book ai didi

无法在 cmd.exe 上运行此程序

转载 作者:太空宇宙 更新时间:2023-11-04 06:39:23 26 4
gpt4 key购买 nike

我试图从一个文件中复制一些文本并将它们保存在结构成员中,我在 cmd.exe 上运行我的程序并且它崩溃了,但是当我在 codeblocks 或 visual studio 上运行它时它可以工作,

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

struct AMIGOS
{
char nom[' '];
char apellido[' '];
char nompila[' '];
char tel[' '];
char correo[' '];
char dir[' '];
char fecha[' '];
};

int main()
{
struct AMIGOS reg;
char registro[128];

char**datos;
char*dato;
datos = (char**)malloc(10*sizeof(char**));
int tam;
int i=0;

FILE* pt = fopen("arch.txt","r");
if(pt==NULL)
{
printf("filenotfound\n");
}
else
{
while(fgets(registro,128,pt))
{
dato = strtok(registro,"|");
while(dato)
{
tam = strlen(dato);
datos[i] = (char *)malloc(tam);
memcpy(datos[i],dato,tam);
datos[i][tam]=0;
i++;
datos[i]=0;
dato = strtok(0,"|");
}
}
strcpy(reg.nom,datos[0]);
strcpy(reg.apellido,datos[1]);
strcpy(reg.nompila,datos[2]);
strcpy(reg.fecha,datos[3]);
strcpy(reg.tel,datos[4]);
strcpy(reg.correo,datos[5]);
strcpy(reg.dir,datos[6]);

printf("%s\n",reg.nom);
printf("%s\n",reg.apellido);
printf("%s\n",reg.nompila);
printf("%s\n",reg.fecha);
printf("%s\n",reg.tel);
printf("%s\n",reg.correo);
printf("%s\n",reg.dir);
}
}

文件上的文字:

凯文|克拉克|ns|2001 年 3 月 15 日|5555555|l@mail.com|123 街

有人知道为什么当我尝试在 cmd.exe 上运行它时它会崩溃吗?

最佳答案

这是超出数组末尾的写入:

tam = strlen(dato);
datos[i] = (char *)malloc(tam);
memcpy(datos[i],dato,tam);
datos[i][tam]=0; <---- 'tam -1' is the last element

您需要添加一个额外的字符来存储空终止符,或者您可以只使用 strdup():

datos[i] = strdup(dato);

关于无法在 cmd.exe 上运行此程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10698610/

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