C & Char Arrays

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

  • C & Char Arrays

    Hallo...

    Habe da ein kleines Problem.
    Programmiere nun seid eineigen Tagen C, bin jedoch sprachen wie .NET und PHP gewohnt.
    Dort ist das Problem mit Arrays ein wenige anders.

    Also ich möchte in C einen Array haben der so aussieht.

    Beispiel anhand PHP:

    PHP-Quellcode

    1. $blumen = array("rot"=>"Rose","rosa"=>"Tulpe","weiss"=>"Nelke","gelb"=>"Sonnenblume");


    Diesen möchte ich dann auch wieder mittels $blumen['rot'] oder $blumen[0] ausgeben können.

    Danke
  • fein,
    danke

    nun wie bekomme ich das hin das ich den Array mittels while schleife füllen kann ?

    Brainfuck-Quellcode

    1. while (node) {
    2. name = (char *) xmlNodeListGetString(node->doc, node->xmlChildrenNode, 1);
    3. //mein array hier füllen <--------
    4. soap_env_add_itemf(res->env, "xsd:string", "vorname", "%s", name);
    5. node = soap_xml_get_next(node);
    6. xmlFree(name);
    7. }
  • Original von wolf_10de
    mit strcpy


    Ja bin seid 3 Tagen dran das hin zu bekommen,
    aber irgendwie will das nicht deswegen bin ich ja nun im Forum angekommen.

    hast da vielleicht ein Sample.
    Muss mich irgendwie auf die neue denkweiße umstellen wenn man das mit den arrays anders gewohnt ist.
  • Original von wolf_10de
    mit strcpy

    Quellcode

    1. char a[10];
    2. strcpy(a, "bla");


    Also dann bekomme ich strcpy nen Warning:
    incompatible declataion of build-in function strcpy

    Quellcode

    1. char a[10];
    2. while (node) {
    3. name = (char *) xmlNodeListGetString(node->doc, node->xmlChildrenNode, 1);
    4. strcpy(a, name);
    5. //soap_env_add_itemf(res->env, "xsd:string", "vorname", "%s", name);
    6. node = soap_xml_get_next(node);
    7. xmlFree(name);
    8. }
  • Original von wolf_10de
    string.h includiert?


    *grins* NEIN :)

    Na ja nun ist die meldung natürlich weg,
    jedoch habe ich nun das nächste Problem.
    Denke sollte das letzte sein.

    Quellcode

    1. char a[20];
    2. while (node) {
    3. name = (char *) xmlNodeListGetString(node->doc, node->xmlChildrenNode, 1);
    4. strcpy(a, name);
    5. //soap_env_add_itemf(res->env, "xsd:string", "vorname", "%s", name);
    6. node = soap_xml_get_next(node);
    7. xmlFree(name);
    8. }
    9. // Problem ab hier!
    10. soap_env_add_itemf(res->env, "xsd:string", "vorname", "%d", a[1]);
    Alles anzeigen


    Nun bekomme ich anstatt zum Beispiel den Array Wert "Test Text" eine int ausgegeben der da heißt 97 ????
  • Original von below
    Du solltest das vielleicht besser mit String und Vectorklassen aus C++ machen.

    Oder mit NSString und NSArray.

    Alex


    Ich kann mich erinnern das NSString und NSArray zwar einfacher sind, aber kein C sondern Objective-C Corefoundation. Ich Programmiere aber rein C. Erst mal den Grundaufbau Lernen dann die Zusätze, zumal das Programm unter Linux läuft in einer Kommandozeile und ich keinen plan habe wie ich dort noch die Corefoundation hin bekomme zum Compilieren.

    Bin froh das ich nen GNU Linux Compiler unter OS X nun habe zwar oder Objective-C bzw Coca aber bekomme es nicht hin unter Mac
  • Original von imediaOne
    Original von below
    Du solltest das vielleicht besser mit String und Vectorklassen aus C++ machen.

    Oder mit NSString und NSArray.

    Alex


    Ich kann mich erinnern das NSString und NSArray zwar einfacher sind, aber kein C sondern Objective-C Corefoundation. Ich Programmiere aber rein C. Erst mal den Grundaufbau Lernen dann die Zusätze, zumal das Programm unter Linux läuft in einer Kommandozeile und ich keinen plan habe wie ich dort noch die Corefoundation hin bekomme zum Compilieren.

    Bin froh das ich nen GNU Linux Compiler unter OS X nun habe zwar oder Objective-C bzw Coca aber bekomme es nicht hin unter Mac


    OK, da könntest Du CFString und CFArray nehmen.

    Das geht auch unter Linux: developer.apple.com/opensource/cflite.html

    Und klar, xmlFree hab ich übersehen.

    Aber * böse kuck * seit wann sind wir denn ein Linux Forum? Ahne ich gotteslästerliche Häresie?

    Alex
    The only thing that really worried me was the ether.
  • Original von below
    Original von imediaOne
    Original von below
    Du solltest das vielleicht besser mit String und Vectorklassen aus C++ machen.

    Oder mit NSString und NSArray.

    Alex


    Ich kann mich erinnern das NSString und NSArray zwar einfacher sind, aber kein C sondern Objective-C Corefoundation. Ich Programmiere aber rein C. Erst mal den Grundaufbau Lernen dann die Zusätze, zumal das Programm unter Linux läuft in einer Kommandozeile und ich keinen plan habe wie ich dort noch die Corefoundation hin bekomme zum Compilieren.

    Bin froh das ich nen GNU Linux Compiler unter OS X nun habe zwar oder Objective-C bzw Coca aber bekomme es nicht hin unter Mac


    OK, da könntest Du CFString und CFArray nehmen.

    Das geht auch unter Linux: developer.apple.com/opensource/cflite.html

    Und klar, xmlFree hab ich übersehen.

    Aber * böse kuck * seit wann sind wir denn ein Linux Forum? Ahne ich gotteslästerliche Häresie?

    Alex


    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! Ja cflite kenne ich jedoch keinen plan wie ich das nun noch dem Compiler beibringe unter linux, zu wenig doku darüber. Macht ja eigentlich fast auch keine !!! Eigentlich schade!
  • Original von wolf_10de
    Zeig mal den ganzen Code den Du gebastelt hast.


    Eingebaut ist die csoap von csoap.sourceforge.net/

    C-Quellcode

    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. #include <string.h>
    4. #include <nanohttp/nanohttp-logging.h>
    5. #include <libcsoap/soap-server.h>
    6. static const char *url = "/soap";
    7. static const char *urn = "urn:test";
    8. static const char *method_create= "vCreate";
    9. herror_t v_create(SoapCtx * req, SoapCtx * res) {
    10. herror_t err;
    11. char *name;
    12. xmlNodePtr method, node;
    13. err = soap_env_new_with_response(req->env, &res->env);
    14. if (err != H_OK) {
    15. return err;
    16. }
    17. method = soap_env_get_method(req->env);
    18. node = soap_xml_get_children(method);
    19. char a[20];
    20. while (node) {
    21. name = (char *) xmlNodeListGetString(node->doc, node->xmlChildrenNode, 1);
    22. strcpy(a, name);
    23. //soap_env_add_itemf(res->env, "xsd:string", "vorname", "%s", name);
    24. node = soap_xml_get_next(node);
    25. xmlFree(name);
    26. }
    27. // An dieser Stelle wird dann noch der erstellte Array abgearbeitet !
    28. soap_env_add_itemf(res->env, "xsd:string", "vorname", "%s", a[1]);
    29. return H_OK;
    30. }
    31. int main(int argc, char *argv[]) {
    32. herror_t err;
    33. SoapRouter *router;
    34. hlog_set_level(HLOG_INFO);
    35. err = soap_server_init_args(argc, argv);
    36. if (err != H_OK) {
    37. log_error4("%s():%s [%d]", herror_func(err), herror_message(err), herror_code(err));
    38. herror_release(err);
    39. return 1;
    40. }
    41. router = soap_router_new();
    42. soap_router_register_service(router, v_create, method_Create, urn);
    43. soap_server_register_router(router, url);
    44. log_info1("press ctrl-c to shutdown");
    45. soap_server_run();
    46. log_info1("server shutting down\n");
    47. soap_server_destroy();
    48. return 0;
    49. }
    Alles anzeigen