배열 색인 0-499에 "$ 1"문자열을 포함하도록 'sval'을 가져 오려고합니다. 다음 코드에서, 그러나 itoa는 나에게 아래의 코드에서 이상한 문자열을주고있다 : 또한 itoa는 감가 상각 된 것 같다int to string, char * itoa
#include<iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
typedef struct data_t {
int ival;
char *sval;
} data_t;
void f1(data_t **d);
int main()
{
data_t *d;
d=static_cast<data_t*>(malloc(500)); //is this even needed?
d = new data_t[500];
f1(&d);
}
/* code for function f1 to fill in array begins */
void f1(data_t **d)
{
int i;
char str[5];
for (int i=0; i<500; i++)
{
(*d)[i].ival=i+1;
itoa (i,str,10);
(*d)[i].sval= str;
}
}
을하지만 내가 문자열
왜? 말해봐, 왜'** d' ????? 단지 당신이'(* d) [i]'할 수 있도록? 정말?! – littleadv
그냥'std :: string'을 사용하십시오. –
당신은'malloc'과'new'를 동시에 사용하지 말아야합니다. 그런데'malloc'은'sizeof (data_t) * 500'이 아닌'500'으로 호출되어야합니다. 하지만 더 나은 점은 C++에서'malloc'을 절대 사용하지 말아야한다는 것입니다. – vsz