-2
問題が発生しましたmalloc()
、何が起こっているのか分かりません。私はMinGWでコンパイルしています。Malloc関数が正常に動作しない
Cadenaはchar *
の場合はtypedef
、leer_dato()
の場合は文字列を返す関数です。
Cadena leer_con_formato(const char * formato)
{
int i = 0;
Cadena dato = leer_dato();
if (strlen(dato) != strlen(formato))
return NULL;
char * nuevo_dato = (char *)malloc(strlen(dato)); // Here's the problem
if (!nuevo_dato)
return NULL;
while (dato[i] != '\0')
{
switch (formato[i])
{
case '0':
if (!isdigit(dato[i]))
return NULL;
nuevo_dato[i] = dato[i];
i++;
break;
case 'C':
if (!isalpha(dato[i]))
return NULL;
nuevo_dato[i] = dato[i];
i++;
break;
case 33 ... 47:
case 58 ... 64:
case 91 ... 96:
case 123 ... 126:
if (!ispunct(dato[i]))
return NULL;
nuevo_dato[i] = dato[i];
i++;
break;
default:
return NULL;
}
}
nuevo_dato[i] = NULO;
return nuevo_dato;
}
「問題が発生しています」 「問題」とは何か?あなたが観察していることを教えてもらえないと思いませんか?そして、[mcve]を提供してください。不完全なコードをデバッグすることはできません(例えば、 'leer_dato'は何をしますか?)。 – kaylum
だから問題は何ですか?あなたは何を期待し、実際に何が起こりますか? –
'malloc(strlen(dato));' - > 'malloc(strlen(dato)+ 1);' – chux