将C字符串数组作为整数返回?

时间:2015-10-01 02:16:48

标签: c arrays pointers return c-strings

我是的初学者。我有一个函数返回c字符串的长度和数组。但是,我很难弄清楚如何将它们作为int发送。我已经尝试使用void指针,但编译器会生成一个错误,指出返回一个指针(int预期)。此外,我尝试实现aToI方法,但没有得到所需的结果。我意识到我只能返回c字符串数组并使用strlen()函数获取其长度。但是,我们如何将一个c字符串数组作为整数发送。请举例说明。谢谢 继承人我的代码是什么样的

int read_header( char *fileName , char **headerRow )
{
    int length= header_columns(fileName);
    headerRow[0]=(char*)malloc(length);
    FILE *fp;
    char c;
    char **header;
    char *savedheader;
    char *returnPointer;
    int counter=0;
    header[0]=(char*)malloc(Max_Line_Length);
    char *pointer=header[0];
    while((c=getc(fp))!='\n')
    {
        if(c!='\n')
        {
            if(c==',')
            {
                length++;
            }
            *pointer++=c;
        }
        else
        {
            length++;
            *pointer='\0';

        }

    }
   pointer=strtok_r(pointer,",",&savedheader);
    while(pointer!=NULL)
    {
        headerRow[counter]=pointer;
        pointer=strtok_r(pointer,",",&savedheader);
        counter++;
    }
    returnPointer= headerRow[0];
    return &returnPointer;


}

我正在阅读以逗号分隔的单词行。然后我使用strtok_r()方法将这些字符解析为c字符串。现在,我需要将headerRow数组作为整数返回给另一个函数。

2 个答案:

答案 0 :(得分:1)

您不能将数组作为int发送。您必须将数组作为数组或指向该数组的指针传递。如果要从函数中获取两个值,请创建包含int和数组的结构,并从函数返回结构化。

答案 1 :(得分:0)

传递C字符串数组的示例,而不是整数

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

int func(char ***return_str) {
    char string_to_return[] = "Hello, world";
    char string_to_return_2[] = "hoge hoge foo bar";
    char **array_of_strings = malloc(sizeof(char*) * 2);
    char *ptr = malloc(strlen(string_to_return) + 1);
    char *ptr2 = malloc(strlen(string_to_return_2) + 1);
    if (array_of_strings == NULL || ptr == NULL || ptr2 == NULL) exit(1);
    strcpy(ptr, string_to_return);
    strcpy(ptr2, string_to_return_2);
    array_of_strings[0] = ptr;
    array_of_strings[1] = ptr2;
    *return_str = array_of_strings;
    return 2;
}

int main(void) {
    char **strings;
    int len;
    int i;
    len = func(&strings);
    for (i = 0; i < len; i++) {
        printf("string %d = %s\n", i, strings[i]);
    }

    for (i = 0; i < len; i++) free(strings[i]);
    free(strings);
    return 0;
}