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

时间:2015-03-15 10:46:24

标签: c string char strcat

我有一个代码,想要将英文字母表中的所有后置者放入一个字符串中,问题是,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);
    }
}

4 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

更改

 strcat(abc, letter);

  abc[letter - 'a'] = letter;

然后添加

abc[26]  = 0;

答案 2 :(得分:1)

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

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

答案 3 :(得分:-4)

你必须传递2arg strcat char * arg,所以你必须改变

strcat(abc, letter) 

strcat(abc, &letter)

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