我想在函数中创建一个字符串的静态数组,然后该函数的返回值将分配给另一个字符串数组。
但似乎我无法执行此作业array2 = function();
,但我认为char *
使用array of string
是否可以?
我的代码有什么问题?
感谢
这是我的代码
#include <stdio.h>
#include <stdlib.h>
char * function();
int main(){
char * array2[100] = {};
array2 = function();
// print this array of string
int i;
for(i=0;i<strlen(array2);i++){
printf("%s\n",array2[i]);
}
system("pause");
}
char * function(){
static char * array[100] = {};
array[0] = "100";
array[1] = "200";
return array;
}
答案 0 :(得分:2)
您应该使用char**
或char* array[]
来表示字符串数组。
在function()
中,array
是char*
数组的第一个地址。原型应为char **function()
。
我不认为数组的名称可以更改。int a[3], b[3];
, a
是常量,因此不允许a = b
。
请注意funtion()
function()
等拼写错误。
答案 1 :(得分:1)
我会做这样的事情:
#include <stdio.h>
#include <stdlib.h>
static char **function(void)
{
char **array = malloc(2 * sizeof(*array));
array[0] = "100";
array[1] = "200";
return array;
}
int main(int argc, char *argv[])
{
char **array2;
array2 = function();
/* print this array of string */
int i;
for (i = 0; i < 2; i++)
printf("%s\n",array2[i]);
free(array2);
return 0;
}
答案 2 :(得分:0)
有很多方法可以解决您的问题。它似乎与这些问题类似[一般数组] [1] [String arrays] [2]
或者你可以传递数组,让它像这样工作
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include "string.h"
using namespace std;
void function(char *input[100]){
input[0] = "100";
input[1] = "200";
}
int main(){
char * array2[100];
function(array2);
// print this array of string (int)strlen(*array2)
int i;
for(i=0;i<(int)strlen(*array2) - 1;i++){
printf("%s\n",array2[i]);
}
system("pause");
}