我想通过char **
得到结果,但是结果只有一个char,为什么?
我不想使用 return 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;
}
最佳答案
您的问题不清楚,也没有明确定义。
我对你的代码进行了一些排列,我认为它足以回答你的问题。不管怎样,我把代码的正确性控制留给了你。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
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] = {};
int i=0;
for (; 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) {
int j=len;
for (; j<lenB; j++) {
resultTem[j] = stringB[j];
}
}
else if (len == lenB) {
int j=len;
for (; j<lenA; j++) {
resultTem[j] = stringA[j];
}
}
*result = resultTem;
return 0;
}
int main() {
char A[] = "123,563";
char *result = (char *)malloc(5*sizeof(char));
(void)addStringAtoB(A, &result);
printf("\n result :----- %s \n", result); // result is not all, but one point ?
return 0;
}
关于C char** 得到结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39473873/