为什么每次输入10作为分级输入时,我的C代码都会输出垃圾值? #包括 #包括 结构食品{ 字符*项目; 国际评级; 原因[30]; 字符直方图[11]; }; 无效删除行(字符*x){ 煤焦温度[30]; 对于(int i=0;i
为什么每次输入10进行评级时,我的输出都会显示一个垃圾值? 有C专家能帮忙吗? 有C专家能帮忙吗? 有C专家能帮忙吗? 有C专家能帮忙吗? 有C专家能帮忙吗? 有C专家能帮忙吗? 有C专家能帮忙吗?为什么每次输入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];
任何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';