Mein Problem ist, dass die strcmp() Funktionen die folgenden Probleme macht:strcmp() geben Segmentation fault: 11 und Zeiger von Ganzzahl Warnung
main.c:35: warning: passing argument 1 of ‘strcmp’ makes pointer from integer without a cast
Beim Kompilieren und die folgende, während das Programm ausgeführt wird:
Segmentation fault: 11
Ich weiß, was die Fehler bedeutet, ich weiß einfach keine andere Möglichkeit, es zu tun ... Habe über die Verwendung von itoa() oder sprintf() nachgedacht, aber ich brauche die Prüfsumme in hex, so kann nicht sehen wie kann ich das erreichen?
Der Code ist wie folgt:
#include "checksum.h"
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char nmea[] ="$GPRMC,131637.000,A,5820.0658,N,00834.5652,E,0.00,,090911,,,A*7E";
unsigned char checksum[] = "00";
char data[82];
int length = strlen(nmea);
int k = 0;
int i;
unsigned char XOR;
checksum[0] = nmea[(length-2)];
checksum[1] = nmea[(length-1)];
for(i=1;i < (length-3);i++){
data[(i-1)] = nmea[i];
}
int dataLength = strlen(data);
for (XOR = 0, i = 0; i < dataLength; i++) //XORer for å finne checksum
XOR ^= (unsigned char)data[i];
printf("*******************************************************\n");
printf("Calculating checksum...\n");
printf("Read checksum: %s\n",checksum);
printf("Read data: %s\n",data);
printf("Calculated checksum: %X \n",XOR);
if(strcmp(XOR,checksum) == 0){ //sammenligner checksumer.
printf("Checksum: OK!\n");
//return 1;
}
else{
printf("Checksum: Mismatch!\n");
//return 0;
}
printf("*******************************************************\n");
//nmeachecksum(buf);
return 0;
}
Jede Hilfe wird sehr geschätzt!
Beendet mit einer Hex-to-Integer-Funktion finden Sie hier: http://johnsantic.com/comp/htoi.html und konvertiert die NMEA druckbare Hex. Und dann habe ich einfach einen if-Test durchgeführt, wie du es vorgeschlagen hast. Vielen Dank! – StianL