[C] doppelte Anführungszeichen vs. einfache - Wo ist der Unterschied?

BastianW

Mitglied
In C kann ich doppelte Anführungszeichen

Code:
    else if (InputChar=="\t")

oder einfache nehmen

Code:
    else if (InputChar=='\t')

Wo ist der Unterschied (mal ganz davon ab das mein Script nicht klappt)?

Der Vollständigkeithalber hier das gesamte Script

Code:
#include <stdio.h>

// Ein Programm das Leerzeichen, Tabulatoren und Zeilenenden zählt


main() {


char InputChar;
int LeerzeichenCounter;
LeerzeichenCounter = 0;
int TabCounter;
TabCounter = 0;
int ZeilenCounter;
ZeilenCounter = 0;



while ((InputChar = getchar()) !=EOF )  // while until there is a EOF in the input
{

    if (InputChar==' ')
    {
        LeerzeichenCounter++;
    }
    else if (InputChar=='\t')
    {
        TabCounter++;
    }
    else if (InputChar=='\n')
    {
        ZeilenCounter++;
    }



}


printf("Ihre Eingabe beinhaltet %i Leerzeichen, %i Tabs und %i Zeilen.",LeerzeichenCounter,TabCounter,ZeilenCounter);



}
 
Zuletzt bearbeitet:
Hallo,

einfache Hochkommata betten ein Character-Literal ein, d.h. einen einzelnen Characterwert. Dies kann ein Buchstabe oder ein Sonderzeichen sein (alles das was die ASCII Tabelle hergibt). Doppelte Hochkommata betten ein String-Literal ein, d.h, eine Kette von einzelnen Characterwerten. Zusätzlich gilt das ein String-Literal immer mit dem Characterwert '\0' abgeschlossen ist.

Solche Literale werden in C als Konstanten behandelt und meist im Textsegment (da auch wo der Code liegt) mitgeführt und gespeichert.

Gruß,
RedWing
 
ohje... Hartes Futter für einen C Anfänger wie mich :).

Bedeuted also wenn ich einen Text Schreibe dann muss er zwingen in die doppelten Anführungszeichen? Nur einzellne Character bekommen die einfachen Anführungszeichen?

Praktisch zum lernen... ein Character ein anführungszeichen, mehrere Character mehrere Anführungszeichen?
 
Jap. Und ist halt wichtig das nen String immer Nullterminiert ist, d.h. ist auch ein "a" nicht dasselbe wie ein 'a', denn "a" == { 'a', '\0' } ;)
Weiterhin funktioniert dabei dann auch der operator== nicht ganz so wie du es erwartest ... beim character-datentyp hast du einen einfachen vergleich. bei einem string hast du dagegen einen array von charactern bzw. es werden die zeigeradressen (auf den anfang des strings) verglichen ;) dafür gibt es dann funktionen wie std::strcmp ...
 
@devDevil

das habe ich auch schon lernen müssen. Ich komme aus dem PHP Bereich. Und da ist es ganz egal ob das ein String ein Buchstabe oder eine Zahl ist. Ist eine gewaltige Umstellung.

Insbesonders Zeiger... DAS ist echt eine harte Nuss...
 
Zurück