array til streng???

Tags:    c

Hej Så nu er den der næsten!!!

jeg har et lille problem! muligvis ikke såstort, men et problem er et problem....

Jeg har en micro processor enhed den modtager en række serielle data som samles i et array.

Det skal jeg så have lavet om til en string

FX;

int seriel[]; //her kommer der en række data ind lad os sige 1,2,3,4,5,6

Jeg laver så et array der ser sådan her ud;

systemID=12345&data=1,2,3,4,5,6

char seriel_ether[]={systemID=12345&data=1,2,3,4,5,6};


det skal jeg have ind og se sådan her ud

char seriel_ether[]={"systemID=12345&data=1,2,3,4,5,6"};


Jeg kan selvfølgelig lave lave lidt om på tingene og klokke systemID=12345&data=1 ind med " forrest og slutte med en /n" det skulle kunne løse det men findes der ikke en andenmåde at løse det på?








10 svar postet i denne tråd vises herunder
4 indlæg har modtaget i alt 19 karma
Sorter efter stemmer Sorter efter dato
Noget i denne stil:
Fold kodeboks ind/udC kode 


Fold kodeboks ind/udKode 




hej...
kender i det, man sider og bøvler og bøvler, så kommer der lidt brød krummer hist og pist så kommer de en fra højre med sidste store krumme
og så køre det bar....
I gutter er bare fantastiske mange tak for hjælpen...

det virker....
Robert din kode stump virker til dels for loopen kan jeg ikke få til at virke, jeg får fejl på return 0

men komponenterne i din kode stump kunne jeg bruge, så må jeg se om jeg kan knække de sidste små kode problemer...

det jeg gør nu er at jeg bare "tvangs" klokker ind i strengen:

strcpy(str, "data=1234,");
dst = str + strlen(str);
dst += sprintf(dst, "%d", numbers[0]);
*(dst++) = ',';

dst += sprintf(dst, "%d", numbers[1]);
*(dst++) = ',';
//dst += sprintf(dst, "%d", ",");
dst += sprintf(dst, "%d", numbers[2]);
*(dst++) = ',';
//dst += sprintf(dst, "%d", ",");
dst += sprintf(dst, "%d", numbers[3]);
*(dst++) = ',';
//dst += sprintf(dst, "%d", ",");
dst += sprintf(dst, "%d", numbers[4]);
*(dst++) = ',';
det virker fint pt. det ville dog se pænere ud med en loop.








Fjern linje 49 og 50...du ønsker jo ikke at returnere fra den linje.

'count' variablen skal indeholde antallet af tal, som skal skrives i strengen. Hvis du vil have alle 16, så ændre linje 7 til 'int count = 16;'




'char' er en datatype for en byte (eller karakter).
'*' er en pointer, så 'char *' er en pointer til et byte array, aka en streng.



Ja noget i den stil...

nu er det længe siden jeg sidst har lavet C kode

char * dst;

Hvad er det lige * betyder?




Fejler?
Må vi se den version, som ikke virker? Det må jo kunne løses.

Strengen i den kode, som du har postet, bliver afsluttet med et komma, som overskriver nul termineringen, så det burde ikke virke som forventet.



der er flere under den slutter rigtigt!

her kommer koden med din stump kode!

Fold kodeboks ind/udC++ kode 


Den fejl meddellelse jeg får er:

In function 'void loop()':
error: return-statement with a value, in function returning 'void'




Indlæg senest redigeret d. 30.11.2012 09:05 af Bruger #17451
Det virker det virker!:bounce::bounce::bounce:


den der med int count til 16 den havde jeg fanget... ;-)

men det der med at fjerne de 2 linjer var skridtet i den rigtige retning...

Her kommer så den rigtige kode, der skal lige bringes lidt strugtur over det men sådan ser den ud;
Fold kodeboks ind/udC++ kode 



Tak for hjelpen... Det var kanon.



Indlæg senest redigeret d. 30.11.2012 11:26 af Bruger #17451
Skal strengen altid starte med "data=12345," ?
For så ville jeg ændre linje 41 - 48 til:
Fold kodeboks ind/udC kode 




nej det skal den ikke.

Den variere fra gang til gang



t