c - 在 C 中分配一个字母

标签 c string printf

我正在尝试根据学生的总分分配字母等级。然后尝试打印该字母等级,但我打印的是空值。这是我正在使用的代码:

int FinalScore;
    FinalScore = q1w+q2w+q3w+q4w+midiw+midiiw+finalw;

// Determine the letter Grade
if (FinalScore>=0 && FinalScore <= 59)
{   
    char LetterGrade[20];
    strcpy(LetterGrade,"F");
}
if(FinalScore>=60 && FinalScore <=69)
{
    char LetterGrade[20];
    strcpy(LetterGrade,"D");
}
if(FinalScore>=70 && FinalScore <=79)
{
    char LetterGrade[20];
    strcpy(LetterGrade,"C");
}
if(FinalScore>=80 && FinalScore <=89)
{
    char LetterGrade[20];
    strcpy(LetterGrade,"B");
}
if(FinalScore>=90 )
{
    char LetterGrade[20];
    strcpy(LetterGrade,"A");
}
printf("%s",&LetterGrade);

知道为什么我会得到 null 吗??谢谢。

最佳答案

我没有看到创建字符串 (char[20]) 的任何实用程序,而不是简单的 char,因为它最终只有一个性格到底。我写了code这似乎工作得很好。

您的代码的问题是 LetterGrade 是在 if 的范围内声明的,因此,当您尝试打印它时,它已经超出了范围,正如我在评论中提到的。

非常重要!正如@Jite 在他的评论中提到的那样,请注意 %c 格式说明符而不是 %s,在printf.

希望能满足您的需求。

#include <stdio.h>

int main()
{

    int FinalScore = 60;
    char LetterGrade;

    // Determine the letter Grade
    if(FinalScore>=0  && FinalScore <= 59) LetterGrade = 'F';
    else if(FinalScore>=60 && FinalScore <=69) LetterGrade = 'D';
    else if(FinalScore>=70 && FinalScore <=79) LetterGrade = 'C';
    else if(FinalScore>=80 && FinalScore <=89) LetterGrade = 'B';
    else LetterGrade = 'A';

    printf("%c", LetterGrade);

    return 0;
}

关于c - 在 C 中分配一个字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32927057/

相关文章:

c# - 使用逗号分隔列表的最简单方法

java - java中的字符串替换,类似于速度模板

c - C 中 printf() 的意外工作

Checknullarray 结构

c - 在 macOS 上编译 XDR 时出现问题(RPC types.h 问题)

您可以在同一函数中使用具有不同键的多个互斥锁/解锁来计算数据结构中的平均值吗?

c - Printf 在套接字调用之前不工作

c - 二维数组、函数、C

r - 从字符串中提取数字以在 R 中将它们相除

c - sprintf() 与 argv 的行为