[c] Variablen verbinden?

Lark

Mitglied
Hallo,
ich habe jetzt schon einige Zeit rumprobiert und gesucht habe aber nichts gefunden.
Wenn hier dennoch ein Thread ist der meinen ähnlich ist und mein Problem löst würde ich euch bitten mich auf diesen Thread zu verweisen.

Also meine Frage ist, wie kann ich mehrer Variablen verbinden?
Also das der wer der z.b in a und b enthalten ist in c abgelegt wird.

Danke schon mal im vorraus.
MfG
Lark
 
ne, Schuldigung hätte mich noch etwas präzieser ausdrücken sollen.

Also in a ist z.b. ein dokument name enthalten (test) und in b ist die datei endung enthalten(.txt).
Jetzt möchte ich das a und b praktisch kombinieren so das text.txt rauskommen würde.

ich hoffe das ist etwas verständlicher.
 
Hallo!

Du möchtest also Strings verketten?!

Da gibt es aber einen Berg an Möglichkeiten, wie man das machen kann! (Abhängig welche Art von Strings man Benutzt...)

Worin speicherst du denn "text" oder ".txt" - In char-Arrays, oder in CString-Objekten? (Ja, ich habe gelesen das im Titel NUR 'C' steht)

Poste doch bitte mal den Code den du hast.

Gruß
Johannes
 
Code:
#include <stdio.h> 


void main (void)  
{ 
    char *var="name";
    char *name;
    char *endung=".txt";
    
    //variablen verketten.....
    printf("%s\n",name);
    system("PAUSE");
 }

im groben ist es das was ich habe.
 
Ich weiss, da steht c im Titel, also ignorier mich, wenn ich OT bin. Aber probier mal dieses (Ist allerdings C++, nicht C):

Code:
#include <string>

void main (void)  
{
  using namespace std;
  string var    = "name";
  string endung = ".txt";
  string name   = var + endung;
  
  printf( "%s\n", name.c_str() );
  system("PAUSE");
}

Das behebt schon mal die Textverkettung. Ist zwar an ein paar anderen Stellen noch nicht perfekt, aber man kann damit arbeiten.
 
Hi Lark!

Also in der C-Runtime-Library gibt es Funktionen mit denen sich das machen lässt:
Code:
#include <stdio.h>
#include <string.h> 


void main (void)  
{ 
    char *var="name";
    char name[255];
    char *endung=".txt";
   
    //variablen verketten.....
	strcpy(name, var);
	strcat(name, endung);

    printf("%s\n",name);
    system("PAUSE");
 }
Mann könnte natürlich auch die Größe von name dynamisch an die Summe der Längen von var und endung anpassen, aber vielleicht ist das aber noch ein bisschen schwer....

Würde so gehen:
Code:
#include <stdio.h>
#include <string.h>
#include <malloc.h> 


void main (void)  
{ 
    char *var="name";
    char *name;
    char *endung=".txt";
   
    //variablen verketten.....
	name = (char *) calloc(strlen(var) + strlen(endung) + 1, sizeof(char));
	strcpy(name, var);
	strcat(name, endung);

    printf("%s\n",name);

    free(name); //Speicher freigeben
    system("PAUSE");
 }
Falls du Letzteres nicht verstehen solltest, nimm lieber den anderen Ansatz!

Hoffe dir geholfen zu haben,
Johannes
 
Zuletzt bearbeitet:
Sehr gut, danke.
Die 2 Variante von revelation funktioniert die 1 nicht und die von Kachelator auch nicht.

Könntest du vieleicht die 2 Varianten noch mal kurz erkläten ganz durch blicken tu ich da net.

Danke.
 
Also was mich jetzt aber wirklich ärgert, ist deine Antwort:
Die 2 Variante von revelation funktioniert die 1 nicht und die von Kachelator auch nicht.
Du hast wahrscheinlich einfach alle einmal kopiert, kompiliert und dann bei zwei von denen eine Fehelermeldung bekommen! Das lag aber NUR daran, weil wir vergessen haben die <stdlib.h> zu includen und bezog sich NUR auf system("PAUSE");! - Die eigentlich wichtigen Teile funktionieren ALLE drei! (Bei meiner zweiten Lösung hattest du glück: Mit der <malloc.h> wird auch die Definition der system-Funktion included!)

Beschäftige dich mal mit dem Thema, such bei Google oder direkt hier im Forum! (Stichwörter: strcpy, strncat, malloc, free, char-array)!

Leute, lernt verdammt nochmal die Grundlagen des Programmierens BEVOR ihr hier hingeht und dann um fertige Codeschnipsel bettelt, die ihr dann ohne sie zu verstehen einfach kopiert!

Sorry, musste einfach mal sein! (Hört sich härter an als gemeint!)

Gruß
Johannes
 
Zuletzt bearbeitet:
Da muss ich dir , glaube ich, leider wiedersprechen da ich system("PAUSE"); schon des öfteren benutzt habe ohne die <stdlib.h> oder <malloc.h> einzubinden.


Auch wenn ich die beiden Librarys eingebunden habe funktionieren beide Möglichkeiten nicht.

Kachelators Möglichkeit gibt " 'string' undeclared (first use in this function)" aus.

Bei deinem Ersten Vorschlag wird keine Fehlermeldung ausgeben und die Anwendung wird einfach wieder geschlossen ohne irgend eine Ausgabe.

Ausserdem darf ich wohl von mir behaupten das ich die Grundlagen des Programmierens kann, da ich mittlerweile ca. 1 Jahr PHP programmiere.
Nur C habe ich gerade erst angefangen.
Aussderm bin ich nicht der Typ der einfach was kopiert und sich nichts dabei denkt, normaler weise versuche ich das Problem auf eigene Faust zu lösen.
Nur diesmal war ich halt auch mal "überfordert".
Da Kachelator dabei geschrieben hat das dies eine Möglichkeit von C++ ist und nicht unbedingt C darum habe ich mir gedacht das es daran liegen würde.
Und bei deiner ersten Variante wurde nichts ausgeben, also keine Fehlermeldung und nichts wurde Ausgeben, womit ich dann selber gerade als C Anfänger relativ wenig mit Anfangen kann.

Ausserdem weiß ich nocht nicht was in welcher Libary steht.
Wäre euch dankbar wen ihr mir da evtl. ein Link zugeben würdet.

MfG
Lark
 
Zurück