2016-11-21 2 views
1

Immer wenn ich versuche, meinen Code auszuführen, erscheint ein Pop-up, das sagt, dass Programm.exe nicht mehr funktioniert.Code :: Blöcke Fehler .exe funktioniert nicht mehr

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

int main() 
{ 
    char D[10]; 
    for(int i; D[i]!='\0';i++) 
     scanf("%c",D); 
    for(int i; D[i]!='\0';i++) 
     printf("%c",D); 

    return 0; 
} 

Und hier ist eine weitere, die den gleichen Fehler

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

int main() 
{ 
    int *ptr= (int*)1000; 
    printf("%d %d ",ptr,*ptr); 
    ptr=ptr+1; 
    printf("New Value of ptr : %u",ptr); 
    printf("%d %d ",ptr,*ptr); 
    return 0; 
} 
+2

Können Sie den Code posten? Es ist ein bisschen schwierig für uns herauszufinden, was das Problem ist, wenn wir den Code nicht sehen können. Bearbeiten Sie die Frage, um sie einzuschließen. – GrandMasterFlush

+0

https://drive.google.com/file/d/0B-QBwnCjr6U9ZzR4ODc2NzdlYW8/view?usp=sharing –

+0

@GrandMasterFlush Hier ist ein weiterer Screenshot des gleichen Fehlers in verschiedenen Code. https://drive.google.com/file/d/0B-QBwnCjr6U9Z3BwLWpaU1JGZEK/view?usp=sharing –

Antwort

0

-Code verursacht :: Blocks Fehler Exe funktioniert nicht mehr ist eine sehr allgemeine Fehlercode mit Code :: Blocks. Es kann aus vielen verschiedenen Gründen auftreten, also haben beide Fälle unterschiedliche Fehler.


Im ersten wird D Wert vor nicht festgelegt in der for Schleife verwendet wird. Das Verhalten kann unvorhersehbar sein, wenn Sie D[i] != '\0' testen.

Dann haben Sie i in Ihrer for-Schleife nicht initialisiert. Meinst du

for(i = 0; D[i] != '\0'; i++)? Die letzte printf ist falsch, Sie können kein char Array drucken. Meinten Sie

printf("%c", D[i]);?


Ich bin über die zweiten nicht sicher, aber ich bin mir ziemlich sicher, dass die erste Zeile int *ptr= (int*)1000; falsch ist. Versuchen

int a = 1000; 
int *ptr = &a; 
0

In Ihrem ersten Programm, Sie habe ich nicht initialisiert. Sie sollten int i = 0 in die for-Schleife setzen.

Zusätzlich ist Ihr Programm eine Endlosschleife. Weil Sie immer nur bei D [0] scannen. Sind Sie sicher, dass Sie keine do ... while-Schleife verwenden möchten? Sie brauchen auch keine zweite Schleife. Vielleicht möchten Sie sehen, wie Sie eine Zeichenfolge in c scannen und drucken.

Möchten Sie folgendes schreiben:

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

int main() 
{ 
    char D[10]; 
    scanf(" %[^\n]s", D); 
    printf("%s\n", D); 

    return 0; 
} 

Im zweiten Programm Verwendung:

int a = 1000; 
int *p = &a; 

Dies stellt sicher, dass die ganze Zahl seiner Speicheradresse hat reserviert.

Verwandte Themen