我有一个代码,想要将英文字母表中的所有后置者放入一个字符串中,问题是,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);
}
}
答案 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)
这将消除以前代码的段错误。