// 编写一个程序,要求用户输入一串字符,然后动态创建一个字符数组,并将用户输入的字符存储到数组中。然后,使用realloc函数将数组的大小扩展为原来的两倍,并继续接受用户输入的字符,直到用户输入字符为换行符( '\n')。最后,打印数组中存储的所有字符。 #include #include #include char * str_cpy(char *dest, const char *src) { int cnt; while (src[cnt++]) ; char *res = (char *)malloc(cnt * sizeof(char *)); if (NULL == res) { perror("malloc"); exit(0); } for (int i = 0; i < cnt; i++) res[i] = src[i]; return res; } int main() { char s1[100]; // 相当于 char *s1 = (char *)malloc(100 * sizeof(char *)); printf("请输入一个字符串: "); // scanf("%s", s1); fgets(s1, sizeof(s1), stdin); // scanf() 不能接收换行,故改用 fgets() char *s2 = str_cpy(s2, s1); int tmp_size = strlen(s2); // 扩展数组大小 s2 = (char *)realloc(s2, 2 * tmp_size); if (NULL == s2) { perror("realloc"); exit(0); } printf("请继续输入字符, 输入换行符结束输入\n"); char *ch; s2[tmp_size - 1] = ' '; while ((ch = getchar()) != '\n') { s2[tmp_size++] = ch; } printf("结果为: %s\n", s2); free(s2); return 0; }