警告:传递'strcpy'的参数 2 会从整数生成指针而不强制转换 [-Wint-转换]|



我尝试声明字符,但它不起作用。为什么输出不显示?每次我完成插入输入时,程序都会崩溃,它还显示(注意:预期的"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+');
            }
}

用双引号引起来表达第二个参数。"G"是一个字符(一个数字(,其中"G"是一个字符串(一个字符数组(。函数 strcpy 不会自动将字符转换为字符串。

所以strcpy(stdgrade[i],'G'(; 实际上应该是strcpy(stdgrade[i],"G"(;

最新更新