Ich möchte ein Hexadezimal mit einem Hexadezimal vergleichen und zeigen, ob es das gleiche ist. Zum Beispiel:Unit-Test: Erwarteter Ergebnis mit Hexadezimal vergleichen
decimal = 255
ExpResult = FF
Hex[x] = FF --> true
Ich möchte ein Hexadezimal mit einem Hexadezimal vergleichen und zeigen, ob es das gleiche ist. Zum Beispiel:Unit-Test: Erwarteter Ergebnis mit Hexadezimal vergleichen
decimal = 255
ExpResult = FF
Hex[x] = FF --> true
Gibt es Gründe, die Sie ExpResult
Argument als char
erklärt haben? und auch Code ist ein wenig unlesbar (benutzen Sie einige Tabs).
Ich werde einige pesu-Code schreiben:
First get the number input from user.
Calculate the hexadecimal value with an algorithm.
Print it. // printing hexadecimal is another story itself
get that hex value from user.
Check it with the expected value.
Siehe this für den Druck (formatiert) Hexadezimal-Werte.
Ich habe das .. Ich kopiere nur den problematischen Teil meines Codes .. weil es sehr lang und unklar ist –
@jackobhusein der Punkt ist, dass Sie Ihren Code löschen sollten und wickeln sie in Funktionen, so dass das nächste Mal, wenn Sie Ihre bearbeiten möchten code verstehen Was ist was ... –
ich glaube nicht, dass es möglich ist, 255+ für die Verwendung von nur c zu unterstützen. –
Ich schrieb ein Programm, das zwei Argumente des Programms und Ausgänge vergleicht, wenn sie passen oder nicht ... Hoffe, es wird helfen;)
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
static char *malloc_hexa(unsigned int num)
{
int len = 0;
if (num == 0)
len = 1;
while (num > 0)
{
num /= 16;
len++;
}
return (malloc(sizeof(char) * (len + 1)));
}
int main(int ac, char **av)
{
char *tmp = NULL;
unsigned int num = 0;
if (ac != 3)
{
printf("Use: ./test [number] [Hexa]\n");
return (1);
}
num = (unsigned int)atoi(av[1]);
if (!(tmp = malloc_hexa(num)))
return (1);
if (sprintf(tmp, "%X", num) <= 0)
return (1);
if (!strcmp(tmp, av[2]))
printf("match: %s/%s\n", tmp, av[2]);
else
printf("no match: %s/%s\n", tmp, av[2]);
free(tmp);
return (0);
}
Randnotiz: Wenn sprintf fehlschlägt, haben Sie einen Speicherverlust. – LPs
Ja, das habe ich vergessen. Sie könnten einfach eine freie() vor der Rückkehr in der if-Bedingung für sprintf ... hinzufügen –
In 'if (ExpResult = Hexa [x! ]) 'where' x' ist jetzt '0' Sie haben nichts in' hexa [0] 'geschrieben. –
'char ExpResult' ->' nicht signiertes char ExpResult' – LPs
C hat keine hexadezimalen Variablen. Siehe [fragen]. Was ist dein ** spezifisches ** Problem? – Olaf