为什么每次输入10作为分级输入时,我的C代码都会输出垃圾值? #包括 #包括 结构食品{ 字符*项目; 国际评级; 原因[30]; 字符直方图[11]; }; 无效删除行(字符*x){ 煤焦温度[30]; 对于(int i=0;i

为什么每次输入10作为分级输入时,我的C代码都会输出垃圾值? #包括 #包括 结构食品{ 字符*项目; 国际评级; 原因[30]; 字符直方图[11]; }; 无效删除行(字符*x){ 煤焦温度[30]; 对于(int i=0;i,c,C,为什么每次输入10进行评级时,我的输出都会显示一个垃圾值? 有C专家能帮忙吗? 有C专家能帮忙吗? 有C专家能帮忙吗? 有C专家能帮忙吗? 有C专家能帮忙吗? 有C专家能帮忙吗? 有C专家能帮忙吗? 任何C专家都能提供帮助?这里有一种删除换行符的更快方法 #include <stdio.h> #include <string.h> struct Food{ char* item; int rating; char reason[30];

为什么每次输入10进行评级时,我的输出都会显示一个垃圾值? 有C专家能帮忙吗? 有C专家能帮忙吗? 有C专家能帮忙吗? 有C专家能帮忙吗? 有C专家能帮忙吗? 有C专家能帮忙吗? 有C专家能帮忙吗?
任何C专家都能提供帮助?

这里有一种删除换行符的更快方法

#include <stdio.h>
#include <string.h>

struct Food{
    char* item;
    int rating;
    char reason[30];
    char histogram[11];
};

void removeNewline(char* x){
    char temp[30];
    for(int i = 0; i < strlen(x)-1; i++){
        temp[i] = x[i];
    }
    temp[strlen(x)-1] = '\0';
    
    strcpy(x, temp);
}

int main()
{
    struct Food x[10];

    x[0].item = "Burger";
    x[1].item = "Broast";
    x[2].item = "Rice";
    x[3].item = "Roll";
    x[4].item = "Handi";
    x[5].item = "Platter";
    x[6].item = "Kebabs";
    x[7].item = "Sandwich";
    x[8].item = "Shake";
    x[9].item = "Kheer";

    char sum[10];
    for(int i = 0; i < 2; i++){
        printf("\nEnter score for %s (1 - 10) : ", x[i].item);
        scanf("%d", &x[i].rating);
        fflush(stdin);

        printf("Enter reason for liking or disliking : ");
        fgets(x[i].reason, 30, stdin);
        removeNewline(x[i].reason);

        strcpy(sum, "*");
        for(int j = 1; j < x[i].rating; j++){
            strcat(sum, "*");
        }
        strcpy(x[i].histogram, sum);
    }

    printf("\n%-13s%-11s%-35s%s\n", "Item", "Rating", "Reason", "Histogram");
    for(int i = 0; i < 2; i++){
        printf("%-13s%-11d%-35s%s\n", x[i].item, x[i].rating, x[i].reason, x[i].histogram);
    }
    
    return 0;
}
其中name是字符数组

当你要求用户输入1-10时,你可能想从中减去,以处理从零开始的数组


希望这能解决你的问题

您没有检查来自
scanf()
的返回值-您不知道它读了什么,甚至不知道它是否真的读了什么。
name[strlen(name) - 1 = '\0';