C & Char Arrays

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Original von wolf_10de
    Kann das sein das Du den String noch casten musst?
    schau mal hier, die machen doch ein schönes Beispiel:

    bytes.com/forum/post289384-1.html


    haha, das ist fast 1:1 das selbe wie mein Code nur das die alles sofort mittels Variable name an den Soap Server geben und zurück senden. Wenn ich name eintrage anstatt a[1] geht's ja auch nur sobald ich den Array nehme, und denn Inhalt zurück geben will geht's nicht mehr.
  • Original von wolf_10de
    Kann das sein das Du den String noch casten musst?
    schau mal hier, die machen doch ein schönes Beispiel:

    bytes.com/forum/post289384-1.html


    Wenn ich das nun so mache bekomme ich zwar nun endlich keinen Error mehr und das Programm Stürzt nicht mehr ab, jedoch zeigt er mir den letzten array eintrag an anstatt den ersten

    Quellcode

    1. soap_env_add_itemf(res->env, "xsd:string", "vorname", "%s", &a[0]);
  • Original von wolf_10de
    naja das soll ja auch so heissen
    soap_env_add_itemf(res->env, "xsd:string", "vorname", "%s", a);


    Ja super, was habe ich denn dann davon,

    im Array müssten folgende werte stehen

    "Max Mustermann"
    "Musterstrasse"
    "Musterort"

    wenn ich das mittels

    Quellcode

    1. soap_env_add_itemf(res->env, "xsd:string", "vorname", "%s", a);

    ausgebe wie soll ich dann die zwei anderen werte erreichen ?
  • na in einer schleife

    Quellcode

    1. char x[4][5]={"bla1", "bla2", "bla3", "bla4"};
    2. int i;
    3. for(i=0; i<5; i++)
    4. soap_env_add_itemf(res->env, "xsd:string", "vorname", "%s", a[i]);
  • Original von wolf_10de
    na in einer schleife

    Quellcode

    1. char x[4][5]={"bla1", "bla2", "bla3", "bla4"};
    2. int i;
    3. for(i=0; i<5; i++)
    4. soap_env_add_itemf(res->env, "xsd:string", "vorname", "%s", a[i]);


    Oh man nen größeren Mist habe ich ja noch nie gesehen, dann bekomme ich in php ja einige arrays geliefert ! Die ich dann zusammen bauen darf!

    Also das geht so net viel zu aufwendig für eine eigentliche so simple Aufgabe, arrays in c und c++ sind das letzte.
  • Das hat nichts mit zu aufwendig zu tun !
    Wenn ich das so mache bekomme ich für zum Beispiel das Wort "Ich bin ein test" in php vom Server mittels Soap 16 Array Felder zurück die ich zwar dann in PHP mittels print_r($array); wieder ausgeben kann, aber um diese weiter zu verwenden muss ich die arrays felder zusammen setzten damit es in PHP wieder einen String ergibt mit Inhalt "Ich bin ein test" und das ist absolut unmöglich, da ich erstens nicht weißt
    wie lang die zeichenkette wirklich ist die zurück gegeben wird, da alle Übergebenen Variablen an den C Soap Server Dynamisch sind und nie gleich lang !!!

    Also sag mir ob das wohl sinnvoll ist dann so einen aufwand zu machen, das was wir hier gerade gemacht haben sind kleine String gewesen, da kommen nachher ca 25 Strings die an den server geliefert werden ! Ok ?

    Kann ja auch ncihts dafür das C nicht in der Lage ist Arrays so zu bilden das man die auch mit a[1] abrufen kann und nicht nur einen Buchstaben bekommt sondern wie bei fast allen Sprachen heute sowieso ein ganzes wort weil man in einem feld bei anderen Sprachen ein ganzen Wort char einsetzten kann nicht nur einzelne Buchstaben !
  • C ist sehr wohl in der Lage a[1] als String auszugeben.

    Quellcode

    1. char x[3][20]={"Max Mustermann", "Musterstrasse", "Musterort"};
    2. int i;
    3. for(i=0; i<3;i++)
    4. printf( "%s\n",x[i]);

    Ich denke es liegt daran dass Du das Prinzip nicht verstanden hasst
  • Ja dann mach doch mal ein Beispiel für folgendes Problem.
    Mal sehen wieviel aufwand das dann ist!

    geliefert werden von PHP Soap Client (Oder jedem X Beliebigen Client) ein array mit folgenden Inhalten:

    "Max Mustermann"
    "Musterstrasse"
    "Musterort"

    PS: gelieferte Inhalte sind immer Dynamisch !
    Es existiert kein Anhaltspunkt wie der lang der jeweilige gelieferte String ist!

    so server bekommt das mittels Soap geliefert, dies lesen wir nun da es ja XML ist in einer schleife aus !!! ist ja nur Text mit einem Beteichner und einem Wert !

    Quellcode

    1. while (node) {
    2. xmlwert = (char *) xmlNodeListGetString(node->doc, node->xmlChildrenNode, 1);
    3. // xmlwert enthält natürlich den übergebenen array wert aus php! pro schleife ein wert!
    4. // Hier entsteht der Array bzw werden die Inhalte eingetragen!
    5. // also folglich wir in array field 1 übergeben "Max Mustermann"
    6. // in der nächsten runde kommt dann
    7. // in array field 2 "Musterstrasse" und in der letzten runde kommt dann
    8. // "Musterstasse"
    9. node = soap_xml_get_next(node);
    10. xmlFree(name);
    11. }
    Alles anzeigen


    soweit so gut nun wollen wir natürlich auch wieder einen array zurück geben können.
    b.z.w array werte !

    mittels Code dermassen aussehen würden wenn es denn so ginge ! Was es ja nicht tut!

    Quellcode

    1. soap_env_add_itemf(res->env, "xsd:string", "name", "%s", array[0]); <-- übergeben soll werden "Max Mustermann"
    2. soap_env_add_itemf(res->env, "xsd:string", "strasse", "%s", array[1]); <-- übergeben soll werden "Musterstrasse"
    3. soap_env_add_itemf(res->env, "xsd:string", "ort", "%s", array[2]); <-- übergeben soll werden "Musterort"


    so nun habe ich die 3 array felder wieder zurück an soap (XML) übergeben dieser erstellt mir 3 bezeichner namens name, strasse, ort.
    Dies kommt nun in PHP5 an und wird mittels der SOAP Extentions Erweiterung ausgesen, natürlich automatisch, bekomme ich dann einen Array in PHP ausgeliefert der folgendermassen nun aufgebaut ist.

    array( 'name' => 'Max Mustermann', 'strasse' => 'Musterstrasse', 'ort' => 'Musterstadt');

    nun kann ich die array natürlich abrufen mit zum Beispiel $array['ort‘]; würde ergeben Musterstadt genauso wie $array[0];

    So nun zeigt mir und überzeugt mich wenn es denn so einfach geht WIE ?
  • Nein habe keine zeit und Lust jemanden was zu beweisen,
    ich benötige das nun mal da der server nun mal C ist und oder client nun mal php ist was hat PHP damit zu tun ?

    Eigentlich recht wenig!

    Es geht hier darum wie Läst sich das realisieren ?
    Zumal denke ich sollte Dir bewusst sein das man wohl kaum PHP was ja für ganz andere dinge gedacht ist wohl kaum mit C vergleich kann ! oder ?

    Also wer kann das Problem nun anständig lösen ?
  • Original von Tom9811
    Ich dachte, dass es nicht um den Aufwand ginge?

    Was willst du eigentlich beweisen? Dass man in PHP alles vermatschen kann, dürfte jedem Forumsmitglied hinreichend bekannt sein.


    Und deine PHP aussage na ja ist ja wohl Ansichtssache !
    Lieber PHP als irgendwelche Java oder ASP.NET Geschichten !
  • Deshalb habe ich es ja auch nicht verglichen.

    Wie sich das Problem lösen lässt, hat dir dankenswerterweise Wolf bereits beschrieben. Und ich teile seine Weinschätzung, dass du es einfach nicht verstanden hast.

    Ich habe jedoch die vage Ahnung, dass die Mehrzahl der Forenmitglieder keine Lust mehr hat, dir zu helfen.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Sicherlich habe ich es verstanden !
    Doch setzt ihr die Werte in char x[4][5]={"bla1", "bla2", "bla3", "bla4"};
    und begrenzt sie mit der max char anstahl 5 !

    Wenn Du meinen Text aufmerksam gelesen hättest würde dir auffallen das dort Dynamisch steht und die wert länge durch aus länger als 5 sein kann !
  • Original von imediaOne
    Wenn Du meinen Text aufmerksam gelesen hättest würde dir auffallen das dort Dynamisch steht und die wert länge durch aus länger als 5 sein kann !

    Wenn Du aufmerksam gelesen hättest, wäre Dir der Beitrag von kressevadder aufgefallen. Dort geht es um dynamische Speicherverwaltung. Ansonsten muss ich mich Amin anschließen, ich mag jetzt nicht mehr.
  • Original von wolf_10de
    Original von imediaOne
    Wenn Du meinen Text aufmerksam gelesen hättest würde dir auffallen das dort Dynamisch steht und die wert länge durch aus länger als 5 sein kann !

    Wenn Du aufmerksam gelesen hättest, wäre Dir der Beitrag von kressevadder aufgefallen. Dort geht es um dynamische Speicherverwaltung. Ansonsten muss ich mich Amin anschließen, ich mag jetzt nicht mehr.


    oder du verwendest strings von C++ ;)
  • Original von imediaOne
    hehe nein kein Linux Forum! Programmiere aber mit Xcode, und da das Tool auf OS X laufen wird und unter Linux ist die frage wohl beantwortet!

    In so einem Fall kannst Du entweder auf C++ zurückgreifen, oder Du weichst auf GNUstep Foundation Library zurück. Je nach Linux Distribution ist das bereits Teil der Distribution.