2015-10-01 5 views
-2

Я новичок в . У меня есть функция, которая возвращает длину и массив строк c. Тем не менее, мне трудно найти, как отправить как int. Я пробовал использовать указатели void, но компилятор генерирует ошибку, говорящую о возврате указателя (int). Более того, я попытался реализовать метод aToI, но не получил требуемого результата. Я понимаю, что я могу только вернуть массив строк c и получить длину, используя функцию strlen(). Однако как мы можем отправить массив строк c как целое число. Пожалуйста, объясните пример. Благодаря Вот что мой код выглядитВозвращаемый массив строк 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; 


} 

Я читаю строку слов, разделенных запятой в качестве символов. Затем я разбираю эти символы как строки c, используя метод strtok_r(). Теперь мне нужно вернуть массив headerRow как целое число в другую функцию.

+1

возвращающего адрес также создает ошибку. –

+0

Вы не должны посылать массив строк c как целое число, я думаю. Отправка массива ithem как нескольких целых чисел может быть не очень хорошей. У вас должны быть лучшие способы передачи ваших данных. – MikeCAT

+2

Я не понимаю ваш вопрос, вы хотите сгенерировать массив целых чисел? –

ответ

1

вы не можете отправить массив как int. вы должны передать массив как массив или указатель на этот массив. если вы хотите вернуть оба значения из функции, создайте структуру, содержащую int и массив, и верните структурированную функцию.

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; 
} 
Смежные вопросы