2016-04-08 8 views
-1

Mein Projekt besteht darin, eine Quellzeichenfolge meines Vornamens, Nachnamens und meiner Schüler-ID in Kleinbuchstaben zu erstellen und sie in separaten Zeilen auszudrucken. Der erste Buchstabe meines Namens wird groß geschrieben. Ich habe mir viele Beispielcodes angeschaut und konnte das nicht herausfinden. Außerdem sollte meine Studenten-ID als Nummer und nicht als Zeichenfolge ausgedruckt werden. Nicht sicher, was das überhaupt bedeutet. Hier ist, was ich bisher habe:Wie kann ich den ersten Buchstaben in meiner Zeichenfolge mit c groß schreiben?

#include <stdio.h> 
#include <string.h> 
#include <ctype.h> 

int main (void) 
{ 
    char str[] = "david house n966898"; 

    char f_name[6], l_name[6], st_id[8]; 

    strcpy(f_name, strtok(str, " ")); 
    strcpy(l_name, strtok(NULL, " ")); 
    strcpy(st_id, strtok(NULL, " ")); 

    printf("First Name: %s\n", f_name); 
    printf("Last Name: %s\n", l_name); 
    printf("Student ID: %s\n", st_id); 


    return 0; 

} 

Bitte Hilfe!

+1

Schüler-ID: für String oder Zeichen zu Integer können Sie atoi() -Funktion verwenden. –

+0

ok, ich habe dieses atoi() schon mal gesehen, war mir aber nicht sicher, was es bedeutet –

+1

'atoi (" n966898 ")' wird 0 sein, also musst du das umgehen. –

Antwort

3

Der Zugriff auf den ersten Buchstaben erfolgt mit dem Array-Operator []. Konvertieren in Großbuchstaben erfolgt mit der ANSI-C-Funktion toupper().

f_name[0] = toupper(f_name[0]); 

Drucken von etwas, das eine Zahl ist, wird mit dem Platzhalter% d ausgeführt. Die Umwandlung einer Zeichenfolge in eine Zahl erfolgt über die ANSI-C-Funktion atoi().

printf("Id: %d\n", atoi(st_id)); 

Sie sollten https://en.wikipedia.org/wiki/The_C_Programming_Language lesen, ein besseres Verständnis von C. zu bekommen

+0

Erarbeiten und erklären Sie Ihre Antwort zum besseren Verständnis –

+0

In diesem Fall ist es vielleicht nicht notwendig, den numerischen Teil der Zeichenfolge in eine Zahl zu konvertieren. Es genügt, nur diesen Teil der Zeichenfolge zu drucken. – Lundin

2
$ apropos upper 
toupper (3)   - convert letter to upper or lower case 
toupper (3p)   - transliterate lowercase characters to uppercase 
towlower (3p)  - transliterate uppercase wide-character code to lowercase 
towupper (3)   - convert a wide character to uppercase 
towupper (3p)  - transliterate lowercase wide-character code to uppercase 
$ man toupper 
NAME 
     toupper, tolower - convert letter to upper or lower case 

SYNOPSIS 
     #include <ctype.h> 

     int toupper(int c); 
     int tolower(int c); 

DESCRIPTION 
     toupper() converts the letter c to upper case, if possible. 

     tolower() converts the letter c to lower case, if possible. 

     If c is not an unsigned char value, or EOF, the behavior 
     of these functions is undefined. 
4

Sie können toupper(int) nennen ein Zeichen zu profitieren; und Sie können atoi(const char *) verwenden, um die Studenten-ID zu analysieren. So etwas wie

printf("First Name: %c%s\n", toupper(f_name[0]), f_name + 1); 
printf("Last Name: %c%s\n", toupper(l_name[0]), l_name + 1); 
printf("Student ID: %i\n", atoi(st_id + 1)); 

Ausgänge (ohne weiteren Änderungen)

First Name: David 
Last Name: House 
Student ID: 966898 
+0

Aus irgendeinem Grund druckt nichts mit dem f_name, l_name, etc –

+0

Ersetzen Sie Ihre 'printf' (s) mit diesen; Hast du noch andere Änderungen vorgenommen? Weil ich das gemacht habe. –

+0

Ich hatte die Bestellung durcheinander gebracht. Es klappt!! Vielen Dank!! –

0

In einigen Situationen in hilft traditionelle ASCII zu verstehen:

‘A’ = 0x41 = 0100 0001B 

‘a’ = 0x61 = 0110 0001B 

Lower to upper: c & 1101 1111 
Upper to lower: c | 0010 0000 

Konvertieren zwischen oberen und unteren Zeichen in ASCII ist ein maskiert ein einzelnes Bit. Wenn es das erste Zeichen eines Zeichenarrays ist, dereferenzieren Sie einfach den Zeiger auf das Array und maskieren Sie es.

*c & 0xDF; // to upper - some may consider bad form! 

Benötigt keine Bibliothek, keine Include-Dateien, und es ist sehr schnell. Würde auch nicht als sehr portabel betrachtet und sollte nur mit dieser Überlegung verwendet werden.

Beachten Sie auch, dass die unteren fünf Bits für Groß- oder Kleinbuchstaben beginnen, das Alphabet bei 1 zu zählen, was einige Einblicke in andere schnelle und einfache Konvertierungen zwischen Zahlen und Alphabet gibt.

Verwandte Themen