我是c的初学者。我有一个函数返回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数组作为整数返回给另一个函数。
答案 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;
}