用户必须输入一些项目,然后矩阵必须在3x4上打印它们 当我使用“%c”而不是“%s”时,它只能显示一个字符,但是当我想用“%s”来打印整个单词时,就不会起作用。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char objetos[10][10];
int main(){
int i,e;
for (i=1;i<=3;i++){
for (e=1;e<=4;e++){
system("cls");
printf("Ingrese El Objeto Personal %i-%i: ",i,e);
scanf("%s",&objetos[i][e]);
}
}
system("cls");
for (i=1;i<=3;i++){
for (e=1;e<=4;e++){
printf("%s",objetos[i][e]);
}
printf("\n");
}
return 0;
}
答案 0 :(得分:2)
但是当我想用“%s”打印整个单词时,是行不通的吗?
格式说明符%s
期望参数const char*
和objetos[i][e]
不是char*
类型的参数,而是char
类型的参数。
改变这个
for (i=1;i<=3;i++){
for (e=1;e<=4;e++){
printf("%s",objetos[i][e]);
}
到
for (i=1;i<=3;i++){
printf("%s",objetos[i]);
}
也在扫描时,这个
scanf("%s",&objetos[i][e]);
不正确,请在此处使用%c
而不是%s
。
例如
for (i=1;i<=3;i++){
for (e=1;e<=4;e++){
system("cls");
printf("Ingrese El Objeto Personal %i-%i: ",i,e);
scanf(" %c",&objetos[i][e]);
}
}
旁注,数组索引从zero(0)
中的one(1)
开始而不是C
。您可能似乎将数据放入objetos[1]
中并从objetos[1]
中读取,但是如果您的程序曾经尝试从objetos[0]
中读取数据,则会造成问题。
最好从0th
索引开始旋转循环。对于例如
for (i=0;i<=3;i++){
for (e=0;e<=4;e++){
scanf(" %c",&objetos[i][e]); /* give the whitespace before %c to avoid buffer overrun */
}
}