Cześć, mam takie pytanie. Do zmiennej: char * value = ASCIIToDecimal(cmd);
lecą znaki ASCI przerobione na format dziesiętny z zmiennej: char cmd[] = "WRBA|11|9|";
W zmiennej: char cmd2[] = "WRBA|11|9|3";
pobieram ostatni znak na końcu czyli 3 char digit = cmd2[strlen(cmd2) - 1];
Chciałby dodać go na sam koniec zmiennej value: strcat(value, digit);
Niestety program nie działa. Co zrobić żeby liczba 3 zostła dodana na koniec zmiennej value? Zmienna value ma dane: 87826665124494912457124 i chce tam dodać na koniec tą trójkę czyli 878266651244949124571243
#include "stdarg.h"
#include "string.h"
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
char* AppendString(const char* str1, const char* str2) {
int str1Len = strlen(str1);
int str2Len = strlen(str2);
int strLen = str1Len + str2Len + 1;
char* str = malloc(strLen);
for (int i = 0; i < str1Len; i++)
str[i] = str1[i];
for (int i = 0; i < str2Len; i++)
str[(str1Len + i)] = str2[i];
str[strLen - 1] = '\0';
return str;
}
char* GetSubString(char* str, int index, int count) {
int strLen = strlen(str);
int lastIndex = index + count;
if (index >= 0 && lastIndex > strLen) return "";
char* subStr = malloc(count + 1);
for (int i = 0; i < count; i++) {
subStr[i] = str[index + i];
}
subStr[count] = '\0';
return subStr;
}
char* InsertString(char* str, int index, char* subStr) {
char* s = GetSubString(str, 0, index);
s = AppendString(s, subStr);
s = AppendString(s, GetSubString(str, index, strlen(str) - index));
return s;
}
char* ASCIIToDecimal(char* str) {
char* dec = "";
int strLen = strlen(str);
for (int i = 0; i < strLen; ++i)
{
char* cDec = malloc(11);
//itoa(str[i], cDec, 10);
sprintf(cDec, "%d", str[i]);
int cDecLen = strlen(cDec);
if (cDecLen < 3)
for (size_t j = 0; j < (3 - cDecLen); j++)
cDec = InsertString(cDec, 0, "");
dec = AppendString(dec, cDec);
}
return dec;
}
int main()
{
char cmd[] = "WRBA|11|9|";
char cmd2[] = "WRBA|11|9|3";
char * value = ASCIIToDecimal(cmd);
char digit = cmd2[strlen(cmd2) - 1];
strcat(value, digit);
printf("%d\n\r", digit);
printf("%s\n\r", value);
}