2016-06-03 21 views
-4

Ich habe char wieC-Programmierung ASCII Grund

char testniPodatak[14] = "1234567890"; 

Ich möchte testen, dass jeder c in String-Wert von 0-9 nach ascii Tisch ..

ich tun, wie folgt:

for (int i = 0; i < 9; i++) 
{ 
    if (ISBN10[i] < 48 || ISBN10[i] >57) 
    { 
      return 3; 
    } 
} 

Wenn außerhalb des Bereichs Funktion Notwendigkeit, 3 zurück, aber in über Zeichenfolge gibt es alle Zeichen 0-9, Funktion Return 3 auf der ersten Iteration ..

Hier Tabelle mit ASCII-Werten https://allrounder163.files.wordpress.com/2014/09/ascii.png

Dank

+0

Der Name der Variablen ist 'testniPOdatak', nicht' ISNB10'. – Barmar

+0

Der C-Standard erfordert keine ASCII-Zeichencodierung. Benutze auch keine magischen Zahlen. Die Standardbibliothek bietet portable Funktionen für das, was Sie wollen - verwenden Sie sie. Außerdem gibt es keine Funktion im Snippet. Sehen Sie [ask] und stellen Sie [mcve] bereit. – Olaf

+0

Ja, aber ich überlasse testniPodatak, um zu funktionieren. – Tomislav

Antwort

1

Sie isdigit

Um zu überprüfen, Format ISBN10 Code() Funktion von ctype.h verwenden können, wie einfache Lösung, können Sie Verwenden Sie so etwas:

for(int i = 0; i <= 8; i++) 
{ 
    if(!isdigit(ISBN10[i])) 
     return 3; 
} 

if(!isdigit(ISBN10[9]) && ISBN10[9] != 'X') 
    return 3; 
+0

Dies wird nicht die letzte Ziffer testen. (JEDOCH ist es nicht * einfach *. Für eine ISBN-10 kann die letzte "Ziffer" entweder eine Ziffer oder das Zeichen "X" sein!) – usr2564301

+0

nein, es ** kann nicht sein ** siehe [Wiki ] (https://en.wikipedia.org/wiki/International_Standard_Book_Number) – beremaran

+0

Ich kenne ISBNs auswendig, aber ich habe diesen Link gelesen und gelesen. Umformatierung von ** ISBN-10 **: "... die ISBN-10-Prüfziffer - die letzte Ziffer der zehnstelligen ISBN - ** muss zwischen 0 und 10 liegen (das Symbol X wird für 10 verwendet) **, "(meine Emph.). – usr2564301