你好,我的软件应该打印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';
}

07-24 09:38
查看更多