Hallo,
ich habe folgenden Code geschrieben um Daten aus einem .TXT-File mittels
zu lesen.
1 | #include <stdio.h>
|
2 | #include <stdlib.h>
|
3 |
|
4 | void read_from_file(char *result, int lenght_result)
|
5 | {
|
6 |
|
7 | FILE *ptr_file;
|
8 | char buf[22];
|
9 | char buf_old[sizeof(buf)];
|
10 | char candata_needed[4];
|
11 | //while(1){
|
12 | ptr_file =fopen("/home/pi/probe.txt","r");
|
13 | if (!ptr_file){
|
14 | return 1;
|
15 | }
|
16 | if (fgets(buf,sizeof(buf), ptr_file)!=NULL){
|
17 |
|
18 | if(memcmp(buf, buf_old, sizeof(buf)))
|
19 | {
|
20 |
|
21 | memcpy(candata_needed, buf + 17, sizeof(buf));
|
22 | strncpy(result, candata_needed, lenght_result);
|
23 |
|
24 | memcpy(buf_old, buf, sizeof(buf));
|
25 | }
|
26 | }
|
27 |
|
28 | fclose(ptr_file);
|
29 | }
|
30 |
|
31 |
|
32 | int main()
|
33 | {
|
34 | int i;
|
35 | int size=4;
|
36 | char *candata = malloc(size);
|
37 | char candata_gen [4];
|
38 | while(1){
|
39 |
|
40 | read_from_file(candata, size);
|
41 | memcpy(candata_gen, candata, sizeo(candata));
|
42 |
|
43 | printf("candata: %s\n", candata);
|
44 | printf("candata_gen: %s\n", candata_gen);
|
45 |
|
46 | }
|
47 | free(candata);
|
48 | return 0;
|
49 | }
|
Die Datei enthält Hex. Zahlen und ich speichere nur 4 davon für meine
Main-Funktion.
Die Daten sollen angezeigt werden und das gelingt mir auch. Nur bekomme
ich zwei unterschiedliche Daten angezeigt:
Die Variabel
liefert genau 4 Hex. Zahlen z.B. 0xFF89. Ich speichere diesen Wert mit
Hilfe der Funktion
1 | memcpy(candata_gen, candata, sizeo(candata));
|
in ein anderes Array und bekomme allerdings beim Anzeigen die ersten 3
Hex. Zahlen richtig und das letztes erscheint immer als Symbole (z.B.
0xFF8§). Ich bin neu in der C Programmierung und wollte wissen, wie ich
es hinkriegen kann, die Daten richtig speichern und anzeigen kann.