kostenloser Webspace werbefrei: lima-city


[C] Access segmentation fault raised in your program

lima-cityForumProgrammiersprachenC/C++ und D

  1. Autor dieses Themas

    infinitysounds

    Kostenloser Webspace von infinitysounds

    infinitysounds hat kostenlosen Webspace.

    Hi Leute,

    Ich habe folgendes Problem:

    Ich habe mit dem gleich folgenden Code versucht, ein Programm zu erstellen, welches den Text in einer Datei
    "encrypted" oder "decrypted" für das Programm ist die Richtung egal.

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <windows.h>
    
    int main(int argc, char *argv[])
    {
        //  Deklarationen beginnen hier
        int x;
        int y;
      char text[10000];
      char text2[10000];
      char text3[10000];
      FILE *to_crypt;
      FILE *final_product;
      to_crypt = fopen("Vokabeln.txt","r");
      final_product = fopen("Mathe.txt","w");
      char in[] = {"aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZäÄöÖüÜß? "};//61
      char out[] = {"xXnNuUkKgGyYeEqQpPwWdDäÄß?bBzZiIhHöÖüÜvVcCtTjJaAfFoOlLrRsSmM "};//61
      
      if(to_crypt==NULL)
      {
       printf("Fehler beim Oeffnen! Bitte ueberpruefe deinen Pfad!\n");
      }
      if(final_product==NULL)
      {
       printf("Fehler beim Oeffnen! Bitte ueberpruefe deinen Pfad!\n");
      }
      else;
      // Deklarationen enden hier
      
      while( fgets(text, sizeof(text), to_crypt) !=0 )
      strcpy(text2,text);
      for(x=0;x<=sizeof(text2);x++)
      {
        for(y=0;y<=61;y++)
        {
            if((strcmp(text2[x],in[y])==0))
            {
                 strcat(text3,out[y]); //Hier tritt der Fehler auf
            }
            else;
        }
      }
      
      fputs(text3,final_product);
      
      remove("Vokabeln.txt");
      
      system("PAUSE");	
      return 0;
    }


    DIe Datei Vokabeln.txt muss sich natürlich im gleichen Verzeichnis befinden ;)

    Ich habe die Stelle mit dem Fehler gekennzeichnet, im Debug Mode sagt mir der Debugger immer
    "An Acces Violation (Segmentation Fault) raised in your program"

    Ich kann den Fehler nicht finden, hat jemand eine Idee?

    Mit freundlichen Grüßen

    InfinitySounds
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    Du kannst dir das strcpy(text2, text); sparen. Als nächstes: warum strcmp? Es reicht ein einfaches
    text2[x] == in[y]
    . Und strcat ist natürlich auch hier falsch. Des weiteren hast du vergessen, dass ein Array bei 0 anfängt und bis Länge-1 endet. Du versuchst auf array[Länge] zuzugreifen, was außerhalb des Arrays liegt.

    Du möchtest eine Datei löschen, die du noch offen hast?

    Ich hab deinen Code aufgeräumt, umformatiert und ausgebessert:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <windows.h>
    
    int main(int argc, char *argv[])
    {
    	// Deklarationen beginnen hier
    	int x;
    	int y;
    	char text[10000];
    	FILE *to_crypt;
    	FILE *final_product;
    	char in[] = {"aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZäÄöÖüÜß? "};
    	char out[] = {"xXnNuUkKgGyYeEqQpPwWdDäÄß?bBzZiIhHöÖüÜvVcCtTjJaAfFoOlLrRsSmM "};
    
    	to_crypt = fopen("Vokabeln.txt","r");
    	final_product = fopen("Mathe.txt","w");
    
    	if(!to_crypt) {
    		printf("Fehler beim Oeffnen! Bitte ueberpruefe deinen Pfad!\n");
    	}
    	if(!final_product) {
    		printf("Fehler beim Oeffnen! Bitte ueberpruefe deinen Pfad!\n");
    	}
    	// Deklarationen enden hier
    
    	while(fgets(text, sizeof(text), to_crypt) != 0) {
    		for(x = 0; x < sizeof(text); x++) {
    			for(y = 0; y < sizeof(in); y++) {
    				if(text[x] == in[y]) {
    					text[x] = out[y];
    					break;
    				}
    			}
    		}
    		fputs(text, final_product);
    	}
    
    	fclose(final_product);
    	fclose(to_crypt);
    
    	remove("Vokabeln.txt");
    
    	system("PAUSE");
    	return 0;
    }
  4. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!