繁体   English   中英

警告:赋值使指针从整数变成整数,而不进行强制转换[-Wint-conversion]

[英]Warning: assignment makes integer from pointer without a cast [-Wint-conversion]

代码声明:

$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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM