Design Frage
-
hi ich habe gerade rausgefunden das ich mit strncpy in Variablen aus dem Hauptprogramm schreiben kann.
2 Beispiele was findet ihr besser ? Bzw. ist am sinnvollsten.
bsp 1:
#include <iostream> #include <vector> using namespace std; void func( char var[] ); int main() { char s[20] = {"123"}; func ( s ); cout << s << endl; // gibt abc aus return 0; } void func ( char var[] ) { cout<<"func var: " << var<<endl; if ( ! strncmp (var,"123",3) ) { strncpy(var,"abc",3); // schreibt abc in die Variable var aus der main Funktion } }bsp 2:
#include <iostream> #include <vector> using namespace std; int func( char var[] ); int main(int argc, char* argv[]) { int ret; char s[20] = {"123"}; ret = func ( s ); if ( ret == 1 ) { strncpy(s,"abc",3); } cout << s << endl; // gibt abc aus system("PAUSE"); } int func ( char var[] ) { cout<<"func var: " << var<<endl; if ( ! strncmp (var,"123",3) ) { return 1; } return 0; }
-
Da du die Frage im C++-Forum gestellt hast: keins. Im C-Forum hättest du wahrscheinlich eine andere Antwort bekommen.
Edit: Es ist immer schön, wenn man die Möglichkeit hat zu erfahren, ob eine Funktion erfolgreich ausgeführt wurde. Ob es in diesem Fall auch sinnvoll ist, sei mal dahingestellt. Wenn du in dem Fall "erfolgreich/nicht erfolgreich" signalisieren willst, gib lieber
boolund nichtintzurück.
-
Also bsp 2 nur mit
bool func ( char var[] );anstatt
int func ( char var[] );Und ja ich wollte erfolgreich/nicht erfolgreich singnalisieren.
Aber die Sache mit dem strncpy fand ich ganz interessant das man über Funktionen einen Wert in Variablen schreiben kann die im Hauptprogramm stehen
-
Wenn dich das überrascht hast du Pointer noch nicht verstanden. Was soll man darauf antworten? Außer dass das C mit cout << ist, ist das ja auch kein sinnvolles Beispiel auf das man eingehen könnte.
-
Ich kann das sogar ohne strncpy.
-
eps schrieb:
Aber die Sache mit dem strncpy fand ich ganz interessant das man über Funktionen einen Wert in Variablen schreiben kann die im Hauptprogramm stehen
Also das wäre interessant, wenn es denn gehen würde. Geht aber nicht. Gott sei Dank.
Was man dazu wissen muss:
void func(char var[]); // und void func(char* var);Das sind bloss zwei Schreibweisen für die exakt gleiche Sache.
So gleich, dass du die Funktion sogar mit der einen Schreibweise deklarieren kannst, und mit der anderen Definieren.
-
hustbaer schrieb:
...
Nur als Ergänzung damit es später nicht zu Verwirrungen kommt: char var[] und char var* sind in keinem anderen Kontext Synonyme. Das bedeutet, du kannst
char var[]nicht verwenden, um einen Zeiger zu deklarieren/definieren. Umgekehrt kann man mitchar* varkein Array anlegen.