\0 an String anfügen, um ihn auszugeben



  • Hy.

    Also ich habe das Problem, dass ich ein string[4] habe, in den "sqrt" reingeschrieben wurde. Dadurch ist kein Platz mehr für die \0. Nun möchte ich den String, also das "sqrt" ausgeben. Dazu suche ich eine Funktion, die entweder nur eine bestimmte Anzahl an Zeichen eines Strings ausliest, oder eben nocht ein \0 am Ende anfügt und dann direkt ausgibt.

    Natürlich könnte ich einfach die string[4] um eines vergrößern, allerdings ist das eine aufgabe meines professor und vorgabe, die somit nicht verändert werden darf.

    bis jetzt kopier ich einfach den string in einen extra angelegten größeren string um das \0 zu bekommen, und gebe es dann aus.

    geht das aber nicht evtl schöner?
    DAnkeschön 🙂



  • Was ist denn ein "string[4]" ?



  • sry, wollte damit ausdrücken, dass ich ein xyz[4] = "sqrt"; habe 🙂



  • ex.aveal schrieb:

    xyz[4] = "sqrt";

    Du meinst, xyz ist ein Datentyp, der nur ein Zeichen in "sqrt" aufnehmen kann. Was ist denn die Aufgabe vom Prof, was sollst Du denn kapieren? Streams?



  • Was ist ein xyz[4] ?

    (Der Datentyp von xyz und von xyz[n] ist gefragt)



  • sry, ich drück mich vllt etwas zu bescheuert aus. also nochmal von vorne:

    ich habe einen string:
    char xyz[4] = "sqrt";

    da "sqrt" alle bits des char-arrays (string) ausfüllt, kann kein \0 mehr reingeschrieben werde, also das String-Ende-Zeichen.

    Nun möchte ich aber den String ausgeben, was zu Schrott führt, da das Zeichen \0, welches das Stringende makiert, nicht gefunden wird. Er gibt also sqrtblödsinnblödsinnblödsinn aus.

    Nun möchte ich dem Programm einfach sagen "gebe die ersten 4 zeichen des char-arrays xyz aus" oder, "füge \0 an char-arrays xyz an und gebe aus"



  • xyz hat ein 0 Zeichen am ende.
    Es passen 4 Zeichen rein. sqr ist 3 Zeichen lang und " " sagt dem Compiler, das er ein \0 anhängen soll.

    int main(int argc, char * argv[])
    {
    	char xzz[4] = "sqr";
    	printf("%s",xzz);
    	return 0;
    }
    

    Ansonsten bist Du hier falsch, das gehört eher ins ANSI-C Forum.



  • Ja, aber WOHIN willst Du es denn ausgeben? Allgemein kannst Du eben den String terminieren, oder die Anzahl zu behandelnder Zeichen mit übergeben. Mehr kann man dazu nicht sagen.



  • es heißt ja auch SQRT und nicht SQR, dann wäre mein problem ja nicht vorhanden.

    also ich will es einfach cout << xyz << endl;

    so will ichs einfach ausgeben. aber eben nur die ersten 4 zeichen, weil sonst schrott rauskommt. es heißt nämlich SQRT und es ist in einem VIER char array gespeichert, also [s][q][r][t] ohne [\0] noch hinten!



  • Was regst Du Dich jetzt so auf ?

    Du bist Dir doch bewusst das Du Schrott Programmierst. (Dann erklärst Du Dein Problem sehr bescheiden
    und machst Dir nicht mal die Mühe das richtige Forum zu wählen.)

    Hier eine mögliche Lösung für C++/CLI

    System::String ^ str = "SQRT";
    Console::WriteLine(str);
    


  • #include <iostream>
    #include <algorithm>
    
    using namespace std;
    
    int main(int argc, char * argv[])
    {
    	char xzz[4] = "sqr";
    	xzz[3] = 't';
    
    	copy(&xzz[0],&xzz[4],ostream_iterator<char>(cout));
    	return 0;
    }
    

Anmelden zum Antworten