在C语言中,如何将2D字符串数组从函数返回到主函数?[警告]从不兼容的指针类型返回
这是我第一学期C编程课程的作业问题 你是根据学生工作计划受雇的。您的第一项任务是编写一个C程序,以帮助教员中的一位教授为其学生的期末考试评分。这次考试由20道选择题组成。每个问题有四个可能答案中的一个:A、B、C或D。程序将从文件中读取学生的答案和正确答案,并将结果打印到屏幕上以及文件输出。班上至少有15名学生 我想做的是读取学生答案文件,并使用函数和正确答案文件将值存储在数组中,然后将两个数组返回到主函数并发送到另一个函数以比较答案。但是,我在将字符串数组返回到主函数时遇到了问题 这是我的代码:在C语言中,如何将2D字符串数组从函数返回到主函数?[警告]从不兼容的指针类型返回,c,arrays,string,return,C,Arrays,String,Return,这是我第一学期C编程课程的作业问题 你是根据学生工作计划受雇的。您的第一项任务是编写一个C程序,以帮助教员中的一位教授为其学生的期末考试评分。这次考试由20道选择题组成。每个问题有四个可能答案中的一个:A、B、C或D。程序将从文件中读取学生的答案和正确答案,并将结果打印到屏幕上以及文件输出。班上至少有15名学生 我想做的是读取学生答案文件,并使用函数和正确答案文件将值存储在数组中,然后将两个数组返回到主函数并发送到另一个函数以比较答案。但是,我在将字符串数组返回到主函数时遇到了问题 这是我的代码
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<stdlib.h>
//Modules
char** readstudent()
{
FILE*s_ans;
static char arrs[20][20];
int i,j;
s_ans=fopen("trial2.txt","r");
if (s_ans == NULL)//check if file can be opened
{
printf("error student");
}
while(!feof(s_ans))
{
for(j=0;j<20;j++)
{
fscanf(s_ans,"%s",arrs[j]);
}
}
printf("ReadStudent\n");
for(i=0;i<20;i++)
{
printf("%d\t %s\n",i+1,arrs[i]);
}
return arrs;
}
char** readcorrect()
{
FILE*c_ans;
static char arrc[20][20];
int x,i;;
c_ans=fopen("CorrectAnswers.txt","r");
if (c_ans == NULL)//check if file can be opened
{
printf("error correct");
}
while(!feof(c_ans))
{
for(x=0;x<20;x++)
{
fscanf(c_ans,"%s",arrc[x]);
}
}
printf("ReadCorrect\n");
for(i=0;i<20;i++)
{
printf("%d\t %s\n",i+1,arrc[i]);
}
return arrc;
}
//Main
int main()
{
int i,j,n,x;
char **as_ans;
char **ac_ans;
as_ans=readstudent();
ac_ans=readcorrect();
printf("Main");
for(i=0;i<20;i++)
{
printf("%s",as_ans[i]);
}
return 0;
}
}
#包括
#包括
#包括
#包括
//模块
char**readstudent()
{
文件*s_ans;
静态字符arrs[20][20];
int i,j;
s_ans=fopen(“trial2.txt”、“r”);
if(s_ans==NULL)//检查文件是否可以打开
{
printf(“错误学生”);
}
而(!feof(s_ans))
{
对于(j=0;j可以通过动态创建二维数组来实现,这样它就没有函数的作用域,然后从函数返回,如下所示:
char** func(){
char **arrs = (char **)malloc(20 * sizeof(char *));
...
// your logic
...
return arrs;
}
使用后,您可以释放动态分配的二维数组的空间。在应用您所说的内容后,您可能还想好好阅读。我的函数编译时没有错误也没有警告,但执行是空的。@marwandiabe显示了您如何从这种类型的二维数组中插入和读取元素。这可能是问题所在,但我希望您清楚地了解您的原始问题,即如何从数组返回二维字符串