| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5859 人关注过本帖
标题:C语言函数中字符串数组的传递
只看楼主 加入收藏
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:709
专家分:2063
注 册:2010-11-11
结帖率:96.55%
收藏
 问题点数:0 回复次数:0 
C语言函数中字符串数组的传递
估计有不少朋友和我一样对函数中字符串数组的传递十分疑惑吧。现将我的一点新的写下来与大家分享下,也希望大家能够对代码进行讨论,看看有无错误,能否进一步简化,或是有更好的解决方案。
程序代码:
void DebugStringArrayVar(int lineNumber,char varName[],char * value[],int rows,int cols)
{
    char * newContent;
    char * oldContent;

    asprintf(&newContent,"Line %d :\n",lineNumber);
    oldContent=newContent;

    asprintf(&newContent,"%s%s :\n",oldContent,varName);
    free(oldContent);
    oldContent=newContent;

    int i,j;
    for(i=0;i<rows;i++)
    {
        for(j=0;j<cols;j++)
        {
            asprintf(&newContent,"%s\t%s",oldContent,value[i*cols+j]);
            free(oldContent);
            oldContent=newContent;
        }
        asprintf(&newContent,"%s\n",oldContent);
        free(oldContent);
        oldContent=newContent;
    }

    AttachToFile(DEBUG_FILE_PATH,oldContent);
    free(oldContent);

    return;
}


程序代码:
int main(void)
{
    DebugStart("test.c","main");

    char * str1="a";
    char * str2="bb";
    char * str3="ccc";
    char * str4="dddd";
    char * str5="eeeee";
    char * str6="ffffff";
    char * stringArray[2][3]={{str1,str2,str3},{str4,str5,str6}};

    DebugStringArrayVar(12,"stringArray",&stringArray[0][0],2,3);

    DebugEnd("test.c","main");

    return 0;
}


代码是从项目中直接复制过来的。DebugStringArrayVar()函数是关键的函数,对其他的函数,大家可以直接忽略掉。

说明:
1、首先创建一个数组,这个数组中元素指向字符串的地址(字符串第一个字符的地址)
2、通过函数将这个数组的首元素地址传递过去,同时传递数组的维度,这样就可以遍历数组了。
3、在函数中,通过value[i*cols+j]找到目标字符串的地址。
搜索更多相关主题的帖子: 解决方案 字符串 C语言 朋友 
2014-10-22 23:06
快速回复:C语言函数中字符串数组的传递
数据加载中...
 
   



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

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