-2
私は結果をchar **
で取得したいが、その結果は1つの文字にすぎないのはなぜですか? return char *
を使用してこの問題を解決したくありません。誰が私に教えることができますか?C char **結果を得る
void test() {
char A[] = "123,563";
char *result = (char *)malloc(5*sizeof(char));
addStringAtoB(A, &result);
printf("\n result :----- %s \n", result); // result is not all, but one point ?
}
int addStringAtoB(char string[], char **result) {
char* token = strtok(string, ",");
char *stringA;
if (token != NULL) {
stringA = token;
token = strtok(NULL, ",");
}
char *stringB;
if (token != NULL) {
stringB = token;
}
int lenA = strlen(stringA);
int lenB = strlen(stringB);
int len = lenA < lenB ? lenA : lenB;
char resultTem[1000] = {};
for (int i=0; i<len; i++) {
char a = stringA[i];
char b = stringB[i];
if (a >='0' && a <= '9' && b >='0' && b <= '9') {
int c = (int)(a - '0') + (int)(b - '0');
resultTem[i] = c + '0';
}
else {
*result = "error";
return 0;
}
}
if (len == lenA) {
for (int j=len; j<lenB; j++) {
resultTem[j] = stringB[j];
}
}
else if (len == lenB) {
for (int j=len; j<lenA; j++) {
resultTem[j] = stringA[j];
}
}
**result = *resultTem;
return 0;
}
[このサイトの質問方法](https://stackoverflow.com/help/asking)をお読みください。 – WhozCraig
は '** result = * resultTem; 'のため – BLUEPIXY
型では、最後のアスタリスクは「先行するポインタ」を意味します。したがって、 'char **'は実際にはcharへのポインタへのポインタです。 C文字列またはchar配列 'char *'は、実際には配列内の最初の文字へのポインタです。 'char **'はその最初のcharへのポインタへのポインタに過ぎません。 – CodeMouse92