gpt4 book ai didi

从一台计算机移动到另一台计算机时程序崩溃

转载 作者:太空宇宙 更新时间:2023-11-03 23:53:37 24 4
gpt4 key购买 nike

我在编写一个小 C 程序时遇到了问题。当我编译它并在我的 mac(在 Windows 7 分区上)和我的工作电脑(也是 Windows 7)上运行它时它工作正常但我需要它在运行 CNC 的 PC 上工作并且它在 Windows XP 上.我可以更改两台计算机上的程序位置,但它在 Windows XP PC 上的任何地方都不起作用它似乎在必须编写文本文件时崩溃但它能够覆盖一个......是否有一些功能与 Windows XP 不兼容?我会再尝试一些,如果我遇到什么,我会告诉你。

附言无法在此计算机上使用调试器,因为我无法安装程序...(工作计算机)。

这是导致问题的代码:

int WritePrograms(int vitesse, double hauteur, int longueur, int largeur, double localRabotage, double localGroove, int overdrive)
{
char nameOfFile[75];
char nomProgramR[75];
char nomProgramG[75];
char cheminDaccesR[100];
char cheminDaccesG[100];
char cheminDaccesGen[] = "programmes/";
char genR[] = "_Rabotage.nc";
char genG[] = "_Groove.nc";
char confirmation [3];
int i = 0;
int c = 0;

char *nomProgram = NULL;
char *caractere = NULL;

FILE* fichierRabotage = NULL;
FILE* fichierGroove = NULL;

do
{
memset(nomProgramG,0,sizeof(nomProgramG));
memset(nomProgramR,0,sizeof(nomProgramR));
memset(nameOfFile,0,sizeof(nameOfFile));
memset(cheminDaccesG,0,sizeof(cheminDaccesG));
memset(cheminDaccesR,0,sizeof(cheminDaccesR));
do
{
printf("\nVeuillez choisir un nom pour votre programme : ");
nomProgram = Saisie(nameOfFile,60);
}while (nomProgram == "0");

if (strcmp(nomProgram,"exit") == 0)
{
printf("\nVous avez decider de ne pas creer le programme\n\n");
Sleep(2000);
exit(0);
}
else if (strcmp(nomProgram,"\0") == 0)
{
printf("\nVous n'avez pas rentrer de nom pour votre programme\n");
sprintf(nomProgramR,"%dX%.0fX%dX%d_Rabotage.nc",vitesse,hauteur*10000,longueur,largeur);
sprintf(nomProgramG,"%dX%.0fX%dX%d_Groove.nc",vitesse,hauteur*10000,longueur,largeur);
printf("\nUn nom generique lui a ete attribuer\n");
sprintf(nomProgram,"%dX%.0fX%dX%d",vitesse,hauteur*10000,longueur,largeur);
printf("\n%s\n",nomProgram);
strcpy(cheminDaccesR,cheminDaccesGen);
strcpy(cheminDaccesG,cheminDaccesGen);
strcat(cheminDaccesR,nomProgramR);
strcat(cheminDaccesG,nomProgramG);
}
else
{
strcpy(nomProgramG,nomProgram);
strcpy(nomProgramR,nomProgram);
strcpy(cheminDaccesR,cheminDaccesGen);
strcpy(cheminDaccesG,cheminDaccesGen);
strcat(nomProgramR,genR);
strcat(nomProgramG,genG);
strcat(cheminDaccesR,nomProgramR);
strcat(cheminDaccesG,nomProgramG);
}

fichierRabotage = fopen(cheminDaccesR,"r");
fichierGroove = fopen(cheminDaccesG,"r");
if (fichierRabotage != NULL || fichierGroove != NULL)
{
do
{
printf("\nLe fichier existe deja, voulez-vous le remplacez (O/N)?");
caractere = Saisie(confirmation,3);
}while (strcmp(caractere,"O") != 0 && strcmp(caractere,"o") != 0 && strcmp(caractere,"n") != 0 && strcmp(caractere,"N") != 0);
if (strcmp(caractere,"O") == 0 || strcmp(caractere,"o") == 0)
{
c = 1;
}
}
else
{
c = 1;
}
}while (c != 1);
fclose(fichierGroove);
fclose(fichierRabotage);

fichierRabotage = fopen(cheminDaccesR,"w+");
fichierGroove = fopen(cheminDaccesG,"w+");
if (fichierRabotage != NULL && fichierGroove != NULL)
{

}
else
{
printf("\nLe programmme n'as pas pu etre creer\n");
Sleep(2000);
exit(0);
}
fprintf(fichierGroove, "[OUTIL 3-CARBIDE 1/8-TEMPS: 7MIN] \n");
fprintf(fichierGroove, "[MATERIEL-MOUSSE RPM 200]\n");
fprintf(fichierGroove, "G20\nG00\nG90\nT2\nG53 Z\nG53 XY\nG92 Z%.4f\nG4 [Changer l'outil]\nM03\n",localGroove);
fprintf(fichierGroove, "G0 X2.5\nG0 Y2.5\nG0 Z%.4f\n",hauteur);

return 0;
}

这里是 headers.h as ask :

#ifndef HEADERS_H_INCLUDED
#define HEADERS_H_INCLUDED

char *Saisie(char *str,int n);
void viderBuffer();
int SaisieNombre(char *chaine,int a);
double SaisieNombreDecimal(char *chaine,int a);
double LireValeurCorrespondante(double thick);
int GetLocals(double *groove, double *rabotage);
int WritePrograms(int vitesse, double hauteur, int longueur, int largeur, double localRabotage, double localGroove, int overdrive);

#endif // HEADERS_H_INCLUDED

最佳答案

这里的问题是通过打开两个文件来检查它们是否存在以及其中一个是否存在。该程序会告诉我是否要覆盖它。然后我会关闭这两个文件并在需要时覆盖它们,但如果它们没有打开,它会尝试关闭 NULL 指针。所以解决方案是这样做:

if (fichierGroove != NULL)
{
fclose(fichierGroove);
}
if (fichierRabotage != NULL)
{
fclose(fichierRabotage);
}

这里的教训:您可以在 Windows 7 中关闭 NULL 指针,但不能在 XP 中关闭

不确定所有其他操作系统。

关于从一台计算机移动到另一台计算机时程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13726964/

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