2017-02-28 11 views
-4

So habe ich dieses "Programm" in python3, das 3 Strings aber den mittleren Teil x mal hinzufügt. Aber ich entschied C zu wählen, als meine erste Sprache nach ein paar einfache Sachen auf Python tun 3. NOW das ist, wie es in Python aussieht:Ein einfaches Python "Programm" in einem C "Programm" drehen!

def printWord(begin, mid, end, r): 
    print(begin, end="") 
    for i in range(r+1): 
     print(mid, end="") 
    print(end) 
begin = input("Enter your beginning.\t") 
mid =input("Enter your middle.\t") 
end = input("Enter your ending.\t") 
r = int(input("How many times?\t")) 

printWord(begin, mid, end, r) 

Also das funktioniert und alles ist cool!

Jetzt C:

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

int makeWord(char begin[], char mid[], char end[], int r) 
{ 
    int i; 
    printf("%s", begin); 
    for(i=0;i<=r;i++){ 
     printf("%s", mid); 
    } 
    printf("%s", end); 
    return 0; 
} 

int main() 
{ 
    int r; 
    char begin[3], mid[2], end[3]; 
    printf("Enter the beginning!\t"); 
    scanf("%s", begin); 
    printf("Enter the middle!\t"); 
    scanf("%s", mid); 
    printf("Enter the ending!\t"); 
    scanf("%s", end); 
    printf("How many times?\t"); 
    scanf("%d", r); 

    makeWord(begin, mid, end, r); 

    return 0; 
} 

Aber dieses

stoppt

Nun meine Frage WARUM? Danke für die Antwort

+1

'scanf ("% d", &r);' –

+2

Lol, Python gehämmert: d –

+1

Hinweis '' und begin' end' nur 2-Zeichen plus den null-Terminator halten kann, und 'mid' kann nur 1 Zeichen halten, Da Sie nicht steuern, wie viele Zeichen der Benutzer eingeben kann, ist diese Anwendung anfällig Pufferüberlauf und Absturz. – Havenard

Antwort

1

Sie missbrauchen scanf. Es dauert Zeiger zu den Zielvariablen, während Sie die Variablen selbst übergeben - schauen Sie sich die Dokumentation online an.

Dies führt dazu, dass alle Ihre Variablen nicht initialisiert werden und Garbage-Werte enthalten. Daher ist undefined Verhalten.