将字符串从一个函数传递到另一个函数
Passing string from a function into another function
这个程序的作用是取每 3 次测试的平均值并将其分类为“低”、“中”、“高”。 “输入”功能用于从用户收集数据。 “阻止”功能是计算平均值并对其进行分类。 “显示”功能是显示所有结果。在这个程序中我可以传递 float 类型的数据,但为什么我不能传递字符串类型的数据。有人可以帮我吗?
#include <stdio.h>
void input ( float*, float*, float* );
void deter (float , float ,float ,float*,char* cate);
void display (float, float, float, float, char);
int main ()
{
float t1_in, t2_in, t3_in, average;
char category[10];
input (&t1_in,&t2_in,&t3_in);
deter(t1_in,t2_in,t3_in,&average,&category);
display(t1_in, t2_in, t3_in, average, category);
}
void input ( float* t1, float* t2, float* t3)
{
printf ("Enter Test 1 >> ");
scanf ("%f",t1);
printf ("Enter Test 2 >> ");
scanf ("%f",t2);
printf ("Enter Test 3 >> ");
scanf ("%f",t3);
}
void deter (float tt1_det, float tt2_det,float tt3_det,float* avg,char* cate)
{
*avg = (tt1_det+tt2_det+tt3_det)/3.0;
if(*avg<2.0)
{
*cate="slow";
}
else if(*avg>=2.0 && *avg<=4.0)
{
*cate="Medium";
}
else if( *avg>4.0)
{
*cate="High";
}
}
void display (float tt1, float tt2,float tt3,float avrg,char ct)
{
printf ("\nTest 1 is %.2f ",tt1);
printf ("\nTest 2 is %.2f ",tt2);
printf ("\nTest 3 is %.2f ",tt3);
printf ("\nAverage >> %.2f",avrg);
printf("\nCategory >> %10s",ct);
}
这是我的输出
输入测试 1 >> 1
进入测试 2 >> 2
进入测试 3 >> 3
测试 1 为 1.00
测试 2 是 2.00
测试 3 是 3.00
平均 >> 2.00
进程返回 -1073741819 (0xC0000005) 执行时间:1.478 秒
按任意键继续。
您需要修复代码中的几个问题:
把最后一个参数改成char*
:
void display(float, float, float, float, char*);
从 category
中删除 &
:
deter(t1_in, t2_in, t3_in, &average, category);
使用strcpy()
函数将字符串复制到指针中:
if (*avg < 2.0)
strcpy(cate, "Slow");
else if (*avg >= 2.0 && *avg <= 4.0)
strcpy(cate, "Medium");
else if (*avg > 4.0)
strcpy(cate, "High");
改变参数char ct
为指针char *ct
:
void display(float tt1, float tt2, float tt3, float avrg, char *ct) {
.
.
printf("\nCategory >> %10s", ct);
}
大功告成。
这个程序的作用是取每 3 次测试的平均值并将其分类为“低”、“中”、“高”。 “输入”功能用于从用户收集数据。 “阻止”功能是计算平均值并对其进行分类。 “显示”功能是显示所有结果。在这个程序中我可以传递 float 类型的数据,但为什么我不能传递字符串类型的数据。有人可以帮我吗?
#include <stdio.h>
void input ( float*, float*, float* );
void deter (float , float ,float ,float*,char* cate);
void display (float, float, float, float, char);
int main ()
{
float t1_in, t2_in, t3_in, average;
char category[10];
input (&t1_in,&t2_in,&t3_in);
deter(t1_in,t2_in,t3_in,&average,&category);
display(t1_in, t2_in, t3_in, average, category);
}
void input ( float* t1, float* t2, float* t3)
{
printf ("Enter Test 1 >> ");
scanf ("%f",t1);
printf ("Enter Test 2 >> ");
scanf ("%f",t2);
printf ("Enter Test 3 >> ");
scanf ("%f",t3);
}
void deter (float tt1_det, float tt2_det,float tt3_det,float* avg,char* cate)
{
*avg = (tt1_det+tt2_det+tt3_det)/3.0;
if(*avg<2.0)
{
*cate="slow";
}
else if(*avg>=2.0 && *avg<=4.0)
{
*cate="Medium";
}
else if( *avg>4.0)
{
*cate="High";
}
}
void display (float tt1, float tt2,float tt3,float avrg,char ct)
{
printf ("\nTest 1 is %.2f ",tt1);
printf ("\nTest 2 is %.2f ",tt2);
printf ("\nTest 3 is %.2f ",tt3);
printf ("\nAverage >> %.2f",avrg);
printf("\nCategory >> %10s",ct);
}
这是我的输出
输入测试 1 >> 1
进入测试 2 >> 2
进入测试 3 >> 3
测试 1 为 1.00
测试 2 是 2.00
测试 3 是 3.00
平均 >> 2.00
进程返回 -1073741819 (0xC0000005) 执行时间:1.478 秒
按任意键继续。
您需要修复代码中的几个问题:
把最后一个参数改成
char*
:void display(float, float, float, float, char*);
从
category
中删除&
:deter(t1_in, t2_in, t3_in, &average, category);
使用
strcpy()
函数将字符串复制到指针中:if (*avg < 2.0) strcpy(cate, "Slow"); else if (*avg >= 2.0 && *avg <= 4.0) strcpy(cate, "Medium"); else if (*avg > 4.0) strcpy(cate, "High");
改变参数
char ct
为指针char *ct
:void display(float tt1, float tt2, float tt3, float avrg, char *ct) { . . printf("\nCategory >> %10s", ct); }
大功告成。