C语言 利用大小为n的指针数组指向用gets函数输入的n行,每行不超过80个字符。

试编写一个函数,它将每一行中连续的多个空格字符压缩为一个空格字符。在调用函数中输出压缩空格后的各行,空格不予以输出

#include <stdio.h>
#include <stdlib.h>

int foo(char* a)
{
int i = 0, j = 0;

while (a[i] != '\0')
{
a[j++] = a[i++];

if (a[i] == ' ')
{
a[j++] = a[i++];
while (a[i] == ' ') i++;
}

}

a[j] = 0;
return 0;
}

int main(void)
{
int n = 2, i;
char *buf[n];

for (i = 0; i < n; i++)
{
buf[i] = (char*)malloc(80);
gets(buf[i]);
}

for (i = 0; i < n; i++)
{
foo(buf[i]);
printf("%d, %s\n", i + 1, buf[i]);
}

for (i = 0; i < n; i++)
free(buf[i]);

return 0;
}

n=2时, 运行结果:
wo kao
ni kao
1, wo kao
2, ni kao追问

for (i = 0; i < n; i++)
free(buf[i]);
这一行是什么意思啊?

追答

释放 malloc划分的动态内存阿

温馨提示:答案为网友推荐,仅供参考
相似回答