C Array zurückgeben?!

Janiiix3

Aktives Mitglied
28. Sep. 2013
1.333
10
38
Hannover
Sprachen
  1. ANSI C
  2. C#
Hallo,

Ist es möglich ein Array zurück zu geben? Wollte nur eine Funktion nutzen und kein globales Array.
Wie kann ich das am besten lösen?



CodeBox C
char conv_int_ascii(unsigned short data)
{
   char result_tmp[10];
   unsigned short tmp;
   unsigned short x;

   if(pos > 10000)
   {
     result_tmp[0] = (pos / 10000);
     tmp = pos % 10000;
     result_tmp[1] = tmp / 1000;
     tmp = pos % 1000;
     result_tmp[2] = tmp / 100;
     tmp = pos % 100;
     result_tmp[3] = tmp / 10;
     tmp = pos % 10;
     result_tmp[4] =  tmp;
     result_tmp[5] = '\n';     
     
     while(result_tmp[x] != '\n')
     {
       result_tmp[x] += 48; // convert to ascii
       x++;       
     }
   }
   
   if(pos > 1000 && pos < 10000)
   {
     result_tmp[0] = tmp / 1000;
     tmp = pos % 1000;
     result_tmp[1] = tmp / 100;
     tmp = pos % 100;
     result_tmp[2] = tmp / 10;
     tmp = pos % 10;
     result_tmp[3] =  tmp;
     result_tmp[4] = '\n';
     
     while(result_tmp[x] != '\n')
     {
       result_tmp[x] += 48; // convert to ascii
       x++;       
     }         
   }

   if(pos > 100 && pos < 1000)
   {
     result_tmp[0] = tmp / 100;
     tmp = pos % 100;
     result_tmp[1] = tmp / 10;
     tmp = pos % 10;
     result_tmp[2] =  tmp;
     result_tmp[3] = '\n';
     
     while(result_tmp[x] != '\n')
     {
       result_tmp[x] += 48; // convert to ascii
       x++;       
     }     
   }
   
   if(pos > 10 && pos < 100)
   {
     result_tmp[0] = tmp / 10;
     tmp = pos % 10;
     result_tmp[1] =  tmp;
     result_tmp[2] = '\n';   
     
     while(result_tmp[x] != '\n')
     {
       result_tmp[x] += 48; // convert to ascii
       x++;       
     }
           
   }
   
   return(result_tmp);
}
 
Hallo,

da du den Platz sowieso in der aufrufenden Funktion oder Routine benötigst, definiere das Array dort und übergebe nur den Zeiger auf das Array.

Dirk :ciao:



CodeBox C
void conv_int_ascii(unsigned short data, char *result_tmp);

void MeineAufrufendeFunktion(void)
{

  char MeinArray[10];
  //...

  conv_int_ascii(data, MeinArray);

  // oder
  conv_int_ascii(data, &MeinArray[0]);

  // nun ist MainArray "gefüllt"
  //...
}



void conv_int_ascii(unsigned short data, char *result_tmp)
{
  //...
  result_tmp[0] = (pos / 10000);
  tmp = pos % 10000;
  result_tmp[1] = tmp / 1000;
  //...
}
 
Dann kann ich ja auch direkt das Array global deklarieren, macht ja keinen Unterschied oder ?
 
Dann kann ich ja auch direkt das Array global deklarieren, macht ja keinen Unterschied oder ?

Genau genommen ist das Array nicht global deklariert, sondern erst mal nur in der Routine
void MeineAufrufendeFunktion(void)
gültig.

Du kannst es aber auch Global definieren. Ob es nun bei dir so oder so Sinn macht, kann ich nicht beantworten. Es ist auch eine Sache vom Programmierstil. Wenn das Array nicht von mehreren Funktionen/Routinen genutzt wird, würde ich es lokal definieren und den Pointer übergeben, ansonsten eben global.
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)