我正在开展一个学校项目,我需要参加全国性的背叛比赛。我需要进入3个团队,当我遇到打印问题时,这只是一个测试打印,我把我踢出一个程序,这是用C语言编写的。最诚挚的问候。
#include<stdio.h>
int main()
{
char t[30];
int score1, score2;
int i;
printf("Enter the National Teams\n");
for(i=1;i<4;i++)
{
scanf("%s", &t[i]);
}
for(i=1;i<4;i++)
{
printf("%s", t[i]);
}
return 0;
}
答案 0 :(得分:0)
要记住的重要一点是C中的字符串是char
类型的数组,末尾有一个空终止符(ASCII 0)。你在这里做的是声明一个长度为30的char
数组。你的程序试图将一个字符串(这是一个char
数组)铲入数组的每个插槽中,导致崩溃
你真正想要的是创建一个char
s数组(也称为2D数组),并在每个插槽中存储一个字符串(然后再打印)。
为了澄清,想想一个像一系列桶这样的数组,每个桶都可以包含一个值(在这种情况下,是char
):
[ ][ ][c][ ][a]
你的程序尝试做的是将整个字符串(这是一大堆char
s)推入每个存储桶中:
[a][ ][ ][ ][ ]
z
c
f
b
答案 1 :(得分:0)
使用2-D char array
,如下所示:
#include<stdio.h>
int main()
{
char t[30][30];
int score1, score2;
int i;
printf("Enter the National Teams\n");
for(i=1;i<4;i++)
{
scanf("%s", t[i]);
}
for(i=1;i<4;i++)
{
printf("%s", t[i]);
}
return 0;
}
2-D char数组t [X] [Y]:X是字符串的最大数量,Y是字符串的最大长度
答案 2 :(得分:0)
您也可以这样做:
#include <stdio.h>
int main(){
int i;
char (*teamName)[10];
for ( i=0; i < 3; i++ ){
scanf("%s", &teamName[i]);
}
for( i = 0; i < 3; i++ ){
printf("%s\n", teamName[i]);
}
return 0;
}
它与下面的2D数组建议完全相同,但它使用指针来完成它。