警告:赋值在没有强制转换的情况下从指针生成整数[-Wint-conversion]

时间:2016-03-10 01:21:26

标签: c vector

代码声明:

$char Primeiro[5][20] = {"Pedro", "Tiago", "Ana", "Bruno", "Camila"};
$char Meio[5][20] = {"Oliveira", "Antunes", "Ferreira", "Santos", "Cunha"};
$char Sobrenome[5][20] = {"Cardoso", "Silva", "Azevedo", "Monteiro", "Soares"};
$char *vNomeCompleto[125][60];
$ vNomeCompleto[i][i] = strcat(Primeiro[iPrimeiro], strcat(Meio[iSegundo], Sobrenome[iTerceiro]));

我无法使向量vNomeCompleto接收其他三个向量。 有人能帮助我吗?

2 个答案:

答案 0 :(得分:1)

  1. vNomeCompleto声明为char *指针数组 - 没有分配字符串的内存,只是指针。
  2. strcat(Meio [iSegundo],Sobrenome [iTerceiro]) - 你试图向Meio [i]增加20个字符,其中有20个最大len - 在某些情况下期望“出界”错误。第一个strcat也一样。

答案 1 :(得分:1)

这是一个有效的例子:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    int i;
    char Primeiro[5][20] = { "Pedro", "Tiago", "Ana", "Bruno", "Camila" };
    char Meio[5][20] = { "Oliveira", "Antunes", "Ferreira", "Santos", "Cunha" };
    char Sobrenome[5][20] = { "Cardoso", "Silva", "Azevedo", "Monteiro", "Soares" };
    char vNomeCompleto[5][400];

    for (i = 0; i < 5; ++i)
    {
        strcpy(vNomeCompleto[i], Primeiro[i]);
        strcat(vNomeCompleto[i], Meio[i]);
        strcat(vNomeCompleto[i], Sobrenome[i]);
    }

    return 0;
}

vNomeCompleto包含:

PedroOliveiraCardoso
TiagoAntunesSilva
AnaFerreiraAzevedo
BrunoSantosMonteiro
CamilaCunhaSoares