![](/img/trans.png)
[英]how to pass element of array as argument to function for it to modify, in ANSI C program?
[英]How can I return an array of strings in an ANSI C program?
如何在ANSI C程序中返回字符串數組?
例如:
#include<stdio.h>
#define SIZE 10
char ** ReturnStringArray()
{
//How to do this?
}
main()
{
int i=0;
//How to do here???
char str ** = ReturnStringArray();
for(i=0 ; i<SIZE ; i++)
{
printf("%s", str[i]);
}
}
您可以執行以下操作。 為簡便起見,省略了錯誤檢查
char** ReturnStringArray() {
char** pArray = (char**)malloc(sizeof(char*)*SIZE);
int i = 0;
for ( i = 0; i < SIZE; i++ ) {
pArray[i] = strdup("a string");
}
return pArray;
}
請注意,您需要相應地釋放返回的內存。
另外,在您的printf調用中,您可能希望在字符串中包含\\n
以確保刷新了緩沖區。 否則,字符串將排隊,並且不會立即打印到控制台。
char** str = ReturnStringArray();
for(i=0 ; i<SIZE ; i++)
{
printf("%s\n", str[i]);
}
這樣做
#include<stdio.h>
#define SIZE 10
char ** ReturnStringArray()
{
//How to do this?
char **strList = (char **)malloc(sizeof(char*) * SIZE);
int i = 0;
if (strList != NULL){
for (i = 0; i < SIZE; i++){
strList[i] = (char *)malloc(SIZE * sizeof(char) + 1);
if (strList[i] != NULL){
sprintf(strList[i], "Foo%d", i);
}
}
}
return strList;
}
main()
{
int i=0;
//How to do here???
char **str = ReturnStringArray();
for(i=0 ; i<SIZE ; i++)
{
printf("%s", str[i]);
}
}
上面的代碼示例假定字符串的最大大小不會超過SIZE
的值,即長度為10個字節...
不要超出雙指針的邊界,因為它會崩潰
請不要強制轉換malloc的返回值,您還沒有包含<stdlib.h>
,正如有人指出,缺少原型會導致將int強制轉換為char **。 偶然地,您的程序可能會也可能根本無法工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.