尝试将字符追加到字符串时出现警告 C4047 和 C4024

Warning C4047 and C4024 when trying to append characters to string

我有一个代码想要将英文字母表中的所有后者放入一个字符串中,问题是 Visual Studio 给我这个:警告

warning C4047: 'function' : 'const char *' differs in levels of indirection from 'char'

还有这个:警告 2

warning C4024: 'strcat' : different types for formal and actual parameter 2

这是代码,请告诉我它有什么问题,无法正确编译。

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

#define NUM_ABC_LET 27
void makeABC(char abc[NUM_ABC_LET]);

int main()
{
    char abcString[NUM_ABC_LET] = "";
    makeABC(abcString);
    puts(abcString);
    return (0);
}

void makeABC(char abc[NUM_ABC_LET])
{
    char letter;
    for (letter = 'a'; letter <= 'z'; letter++)
    {
        strcat(abc, letter);
    }
}

strcat 需要两个指向 C 字符串的 char 指针 ,即空终止字符数组。

您传递的是 letter,它是 char,而不是 C 字符串。再试一次。

改变

 strcat(abc, letter);

  abc[letter - 'a'] = letter;

然后添加

abc[26]  = 0;

标准 C 函数 strcat 处理字符串。因此,如果您确实想使用函数 strcat,那么循环可能看起来像

void makeABC( char abc[NUM_ABC_LET] )
{
    char letter[] = "a";
    for ( ; letter[0] <= 'z'; letter[0]++ )
    {
        strcat( abc, letter );
    }
}

您必须将 char * arg 作为 strcat 的 2arg 传递,因此您必须更改

strcat(abc, letter) 

strcat(abc, &letter)

这将消除您之前代码的段错误。