首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将字符数组回传给C的main函数?

如何将字符数组回传给C的main函数?
EN

Stack Overflow用户
提问于 2016-10-23 07:18:35
回答 1查看 61关注 0票数 0

我试图从我创建的一个函数中转移一个数组,输入一个由char组成的数组和一个简短的,复制如下

代码语言:javascript
复制
    char transl [] (char **x, short num){
    char newword []  = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    short num = num;
    FILE * wd;
    wd  = fopen(argv[1], "r");
    short w=0;
    short arrayle=sizeof(x);
    if (arrayle>9){
    while((c = getchar() != '\n') && c != EOF);
    }
    while(((c = fgetc(wd)) != EOF)&& (num>=1)) {
    if (c == ' ') {
    num--;
    }
    if (num == 1) {
    newword [w] = ((c = fgetc(wd)));
    w++;       
    }
    }
    fclose(wd);
    return newword;
    }

我通过以下方式将设置大小的数组返回到main中。

代码语言:javascript
复制
     char newDay [32];
     newDay  = transl (engw, daynum);

我得到以下错误:

代码语言:javascript
复制
assignment to expression with array type

我在Stack上读到,我必须回传一个指向数组的指针,但如果不回传数组本身,该指针在main中不是无效的吗?

不管怎么说,我非常困惑。请提前给我建议,谢谢!

EN

Stack Overflow用户

发布于 2016-10-23 07:23:49

为了从函数中传回数组,您需要做以下两件事之一:

  • Allocate the array in static memory -此方法仅适用于单线程系统,并且仅在不需要在动态内存中释放数组的情况下有效-这对可重入性或并发性没有限制,但调用者将被要求释放它们接收的内存以避免内存泄漏。

下面是第二种方法的示例:

代码语言:javascript
复制
char *newword = malloc(30);
memset(newword, 0, 30);
...
return newword;

函数的调用者将需要调用

代码语言:javascript
复制
free(resultOfCall);

在他处理完返回的数组之后。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40197981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档