这个满足你的要求了,你试试
程序代码:
#include <stdio.h> #include <string.h> #define M 30 #define N 30 //自定义计算每行字符串长度的函数 int strlength(const char *str) { return (0 == *str) ? 0 : (1 + strlength(str + 1)); } //自定义字符串连接的函数 void strlink(char *str1,char *str2) { while(*str1!=0) str1++;//将str1指向末尾的 \0 ,该位置正好是str2第一个字符要放置的位置 while(*str2!=0) { *str1=*str2; //str2还没到末尾时依次连接每个字符 str1++; //移动两个指针准备处理下个字符 str2++; } *str1=0; //为str1手工置结束符 \0 } int main() { int i=0,m=M,n=0; char arr[M][N]; char (*p)[M]; // int num[N]={0}; //统计字符串的长度 p=arr; int _exit=0; do{ system("cls"); printf("请输入要输入字符串的行数,该数字要小于%d:",m); do{ scanf("%d",&n); }while(n>M); getchar(); //吸收回车 //下面是输入和输出每行字符串,可以将输出字符串部分注释掉 for(i=0;i<n;i++) { // printf("请输入第%d行字符串:\n",i+1); gets(p[i]); //调用自定义函数统计字符串长度,这段也可以注释掉 // num[i]=strlength(p[i]); // printf("长度%d的第%d行字符串:",num[i],i+1); // puts(p[i]); } //调用自定义连接函数,进行字符串连接 for(i=1;i<n;i++) { strlink(p[0],p[0+i]); } //输出连接后字符串 puts(p[0]); printf("非0再次运行,0退出\n"); scanf(" %d",&_exit); }while(_exit!=0); return 0; }
[此贴子已经被作者于2016-5-17 12:40编辑过]