tolower()函数问题

gio*_*ozh 1 c unix tolower

这是我的示例代码:

#include<stdio.h>
#include<string.h>
#include<ctype.h>

void convert(char *a, char *b) {
    int i;
    for(i=0; i<strlen(a); i++) {
        b[i]=tolower(a[i]);
    }
}

int main() {
    char a[20], b[20];

    fgets(a, sizeof(a), stdin);
    convert(a, b);
    printf("%s\n", b);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但有时convert()函数还会转换一个char而不是strlen(a)(它是一个随机字符),例如这是一个输出:

ASDSA
asdsa
%
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

md5*_*md5 5

你必须'\0'在末尾添加一个空字符()b.