你好,我的软件应该打印abc,但不幸的是它不起作用,我认为问题与19号线有关,所以如果有人能告诉我为什么会发生这种情况,我很感激
我的代码-
#include <stdio.h>
#include <string.h>
#define NUM_ABC_LET 27
void ABC(char abc[NUM_ABC_LET]);
int main()
{
char abcString[NUM_ABC_LET] = "";
ABC(abcString);
puts(abcString);
}
void ABC(char abc[NUM_ABC_LET])
{
char letter;
for (letter = 'a'; letter <= 'z'; letter++)
{
strcat(abc, letter);
}
}
最佳答案
问题是函数stdcat()
需要一个以空结尾的字符串作为第二个参数。
#include <stdio.h>
#include <string.h>
#define NUM_ABC_LET 27
void ABC(char abc[NUM_ABC_LET]);
int main()
{
char abcString[NUM_ABC_LET] = "";
ABC(abcString);
puts(abcString);
}
void ABC(char abc[NUM_ABC_LET])
{
char letterStr[2];
strcpy(letterStr, "x");
for (char letter = 'a'; letter <= 'z'; letter++) {
letterStr[0] = letter;
strcat(abc, letterStr);
}
}
这个解决方案简单得多:
#include <stdio.h>
#include <string.h>
#define NUM_ABC_LET 27
void ABC(char abc[NUM_ABC_LET]);
int main()
{
char abcString[NUM_ABC_LET];
ABC(abcString);
puts(abcString);
}
void ABC(char abc[NUM_ABC_LET])
{
for (int i = 0; i < 26; ++i) {
abc[i] = 'a'+i;
}
// Add the terminating null character.
abc[NUM_ABC_LET-1] = '\0';
}