C语言 警告:赋值使指针成为整数,而不强制转换 [-Wint-转换]



代码声明:

$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接收其他三个向量。有人可以帮助我吗?

  1. vNomeCompleto 声明为 char* 指针数组 - 没有分配字符串的内存,只分配指针。
  2. strcat(Meio[iSegundo], Sobrenome[iTerceiro]) - 您试图向具有 20 个最大 len 的 Meio[i] 添加 20 多个字符 - 在某些情况下预计会出现"越界"错误。第一个strcat也是如此。

这是一个工作示例:

#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

相关内容

最新更新