'How can I return a calloc pointer from C into C++?
I am working on a personal project that requires me to call C functions from C++ code. These C functions return a calloc() pointer.
1t5.h
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
char * prob1(char * number);
1t5.c
#include <1t5.h>
char * prob1(char * number) {
int ni = atoi(number);
char prompt[] = "hello\n";
char * answer = (char*)calloc(ni, sizeof(prompt));
for (int i = 0; i < ni; i++) {
strcat(*answer, prompt);
}
return answer;
}
That C code is supposed to return a given number of "hello\n".
linking.cpp
string Link::problemRouting(string problem, vector<string> contents) {
string answers = "";
char * ca;
int pi = stoi(problem);
for (int i = 0; i < contents.size(); i++) {
ca = cv.stringToChar(contents[i]);
// C Standard
if (pi <= 5) {
char * answer;
switch(pi) {
case 1:{
answer = prob1(ca);
}
case 2: {
answer = prob2(ca);
}
case 3: {
answer = prob3(ca);
}
case 4: {
answer = prob4(ca);
}
case 5: {
answer = prob5(ca);
}
}
cout << answer;
answers+=answer;
free(answer);
}
}
return answers;
}
This C++ code takes the return value and saves it to store into a text file later.
The problem is when I input a number, lets say 257, then the return value is 257, and not a ton of "hello\n".
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
