
#include
void main()
{int i;
char model[3];
for(i=0;i<10;i++)
{printf("Enter the model:");
scanf("%s",&model[i]);
printf("model%d=%s",i+1,model[i]);
}
}
就是上面的程序
#include
void main()
{int i;
char model[3];
for(i=0;i<10;i++)
{printf("Enter the model:");
scanf("%s",&model[i]);
printf("model%d=%s",i+1,model[i]);
}
}
出错的原因不在你输入了什么,而是输出语句键亩printf("model%d=%s",i+1,model[i])中的控制符%s与输出变量model[i]不匹配:%s是要求输出字符串,而model[i]是一个字符!改成printf("model%d=%s",i+1,model)就匹配了。scanf("%s",&model[i])也有问题,但不至于出错,只是清亮漏会造成潜在危险:%s要求输入字符串,而变量是&model[i],i在变,后一次输入的串会把前一次输入的串从第二个字符开始覆盖。把%s改成%c才答烂符合这段代码的逻辑。
scanf("%s"拍启做,&model[i]);类型不匹配,mode[i]是旁州char型变袭衡量,应用%c匹配,%c应和model匹配;但这样用很危险,越界的可能性很大;
输出字锋脊符得用%c,不是%s
printf("model%d=%s",i+1,model[i]);
改为芦基烂:
printf("model%d=%c"陪漏,i+1,model[i]);
一。你要干什么?升前森
你既然已经将字符串长度限定在3个字符以内,那为什么还要输入大于3个字母的字符串呢?
那悔和肯定访问内存出错。
二。你的程序有错误。吵亩
1.首先,for(i=0;i<10;i++)改为 for(i=0;i<3;i++)
2.scanf("%s",&model[i]); // 错误
改为scanf("%c",&mode[i]);
3.printf("model%d=%s",i+1,model[i]); //错误
改为printf("model%d=%c",i+1,model[i]);
4.要完成你的目标,还得加一句
getchar(); //吸收回车符
5.程序可如下(每次输入一个字符):
#include
void main()
{int i;
char model[3];
char c;
for(i=0;i<3;i++)
{printf("Enter the model:");
scanf("%c",&model[i]);
getchar();
printf("model%d=%c",i+1,model[i]);
}
}
可以