尝试将字符追加到字符串时出现警告 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)
这将消除您之前代码的段错误。
我有一个代码想要将英文字母表中的所有后者放入一个字符串中,问题是 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)
这将消除您之前代码的段错误。