您試圖將字符數組作爲字符串(由零字符終止的字符序列)輸出,而數組不包含字符串。
要麼輸出固定數量的字符數組元素。或者你應該在字符數組中存儲一個字符串。
例如
#include <stdio.h>
#include <stdlib.h>
char *maxCharac(int x)
{
char *str=(char*)malloc(sizeof(char)*x);
for(int i=0;i<x;i++)
{
str[i]='a';
}
return str;
}
int main(void)
{
const int N = 10;
for (int i = 1; i < N; i++)
{
char *s = maxCharac(i);
printf("%*.*s\n", i, i, s);
free(s);
}
return 0;
}
程序輸出是
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
或者
#include <stdio.h>
#include <stdlib.h>
char *maxCharac(int x)
{
char *str=(char*)malloc(sizeof(char)*x + 1);
int i = 0;
for (; i < x; i++)
{
str[i]='a';
}
str[i] = '\0';
return str;
}
int main(void)
{
const int N = 10;
for (int i = 1; i < N; i++)
{
char *s = maxCharac(i);
printf("%s\n", s);
free(s);
}
return 0;
}
程序輸出是
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
不要忘記0-終止你的字符串。這是問題。重複的鏈接,有人? –
閱讀'printf'的要求。 – juanchopanza
'printf(「%。* s」,2,maxCharac(2))'將字符數組打印爲可能缺少_null字符的「字符串」。 – chux