| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2300 人关注过本帖
标题:这个GG的二维数组字符串连接,求问思路,来个思路
只看楼主 加入收藏
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 
这个满足你的要求了,你试试
程序代码:
#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编辑过]

2016-05-17 12:01
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <stdlib.h>
#define BUFFER_SIZE 1024

main()
{
    int n;
    for (;;)
    {
        printf("字符串数n(n=0结束):");
        scanf("%d", &n);
        if (n < 1) break;
        char *ps = (char*)malloc((BUFFER_SIZE+n)*sizeof(char));
        char *p = ps;
        for (int i=0; i<n; i++)
        {
            setbuf(stdin, NULL);
            printf("第%d个字符串(字节数<=%d):", i+1, BUFFER_SIZE/n);
            gets(p);
            for (int len=0; (len < BUFFER_SIZE/n) && (*p!=0); len++,p++);
            *p = '\0';
            p++;
        }
        *(--p) = '\0';
        printf("输入的每个字符串:\n");
        p = ps;
        for (int i=0; i<n; i++)
        {
            for (; *p!='\0'; p++)
                printf("%c", *p);
            *p = ' ';
            p++;
            printf("\n");
            
        }
        *(--p) = '\0';
        printf("\n连接之后的字符串:\n%s\n", ps);
        free(ps);
        ps = NULL;
    }
}
2016-05-17 16:47
快速回复:这个GG的二维数组字符串连接,求问思路,来个思路
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033083 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved