【发布时间】:2019-09-17 02:47:04
【问题描述】:
我尝试声明 char 但它不起作用。 为什么没有出现输出?每次我完成插入输入时程序崩溃。它也显示(注意:预期的'const char *',但参数的类型为'int'|)(警告:传递'strcpy'的参数2使指针从整数而不进行强制转换[-Wint-conversion]|)。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/**Functions**/
void info();
void mark();
void grade();
void report();
/**Variables**/
char stdID[15][20];
char subj[20][20];
char stdgrade[30][20];
int stdMark[30];
int subjTaken[30];
void mark()
{
printf("Enter subject taken : ");
scanf("%d", &subjTaken[i]);
for(j=0;j<subjTaken[i]; j++)
{
printf("\nEnter subject : ");
scanf("%s", &subj[j]);
printf("Mark for the subject : ");
scanf("%d", &stdMark[j]);
grade();
}
}
void grade()
{
if((stdMark[i]=0)&&(stdMark[i]<=39))
{
strcpy(stdgrade[i],'G');
}
else if(stdMark[i]<45)
{
strcpy(stdgrade[i], 'E');
}
else if(stdMark[i]<50)
{
strcpy(stdgrade[i], 'D');
}
else if(stdMark[i]<55)
{
strcpy(stdgrade[i], 'C');
}
else if(stdMark[i]<60)
{
strcpy(stdgrade[i], 'C+');
}
else if(stdMark[i]<65)
{
strcpy(stdgrade[i], 'B');
}
else if(stdMark[i]<70)
{
strcpy(stdgrade[i], 'B+');
}
else if(stdMark[i]<80)
{
strcpy(stdgrade[i], 'A-');
}
else if(stdMark[i]<90)
{
strcpy(stdgrade[i], 'A');
}
else if (stdMark[i]<=100)
{
strcpy(stdgrade[i],'A+');
}
}
【问题讨论】:
-
变量
i这里没有初始化scanf("%d", &subjTaken[i]);。 -
这里
strcpy(stdgrade[i],'G');strcpy()第二个参数应该是char*类型,但你提供了'G'这是char类型。更正它。 -
这里
if((stdMark[i]=0)&&(stdMark[i]<=39))stdMark[i]=0应该做什么?它是一个作业,你可能想使用==或其他东西。 -
@Achal 在 C 'G' 中是一个 int。它是 C++ 中的一个字符。
-
= 使用 " " 而不是简单的引号 ' ' 应该会有所帮助
标签: c