2012-04-11 20 views
0

Für meine Aufgabe muss ich Zahlen auf den Bildschirm drucken und sie in ihre spezifischen Buchstaben entschlüsseln. Ich benutze nur die Buchstaben a-l in diesem Code, nur um es einfach zu halten, damit ich es verstehen kann.Verwenden eines Arrays zum Dekodieren von Zahlen in Buchstaben

Das Problem, das ich habe, ist, dass, wenn ich zum Beispiel die Nummer 0, die dem ersten Eintrag in das Array, das ein ist, enthält, wird es herausnehmen und drucken b-l.

Wie mache ich es so, wenn ich die Zahl 0 einstelle, wird der Code nur einen auf den Bildschirm drucken?

#include <stdio.h> 

int main() 
{ 
char code[] = "abcdefghijkl"; 
int i, j, k; 
printf("how many letters does your code contain?: "); 
scanf("%d", &j); 
for(i=0; i<j; ++i){ 
    printf("enter a number between 0 and 11\n"); 
    scanf("%d", &k); 
    printf("%s\n", &code[k]); 
} 
} 

Antwort

4

Sie drucken nur das Zeichen an dieser Stelle, so ändern

printf("%s\n", &code[k]); 

zu

printf("%c\n", code[k]); 

Sie sollten auch prüfen, ob der Wert, den Sie in k lesen ist> = 0 & & < 11, sonst greifen Sie auf das Array außerhalb seiner Grenzen zu.

+0

habe ich versucht, dass und den folgenden Fehler bekommen: code.c: 12: 3: Warnung: format '% c' erwartet Argument des Typs 'int', aber Argument 2 hat Typen ' int * '[-Wformat] – user1304516

+0

@ user1304516 Dann stimmt der Code, den Sie gepostet haben, nicht mit dem Code überein, den Sie kompilieren. – nos

+0

@ user1304516: Sie müssen '&' auch während des Druckens entfernen? – Naveen

0

%s Formatbezeichner wird zum Drucken von Zeichenfolgen verwendet, Sie müssen %c Spezifizierer verwenden, der ein Zeichen auf dem Bildschirm druckt.

0

anstelle von printf("%s\n", &code[k]);

Verwandte Themen