我试图将特定顺序的一组A和B存储到字符串中,但是不能。
char String[100];
char choc_type;
int F=0,L,i,j,choc_num,N; //F=First, L=Last
scanf("%d",&N);
for(i=0;i<N;i++)
{ //choc_type is 'A' or 'B' and choc_num is no.of A's or B's
scanf("%d %c",&choc_num,&choc_type);
L=F+choc_num;
for(j=F;j<L;j++)
{
if(choc_type=='A')
String[j]='A'; //is this a right way to assign character
else if(choc_type=='B')
String[j]='B';
}
F=L;
L=L+choc_num;
}
printf("%s",String);
getch();
}
答案 0 :(得分:0)
您应将scanf()
的地址传递给scanf("%d %c",&choc_num, &choc_type);
^
:
C
在'\0'
中,字符串实际上是由空字符String
终止的一维字符数组,而您不在for
数组中添加空字符填充后。在外部String[F] = '\0';
循环之后,您应该执行以下操作:
scanf()
您的代码有很多改进的地方,例如,您应该对用户提供的输入进行一些验证,检查awk '
/foo/ { prtInfo() }
END { prtInfo() }
function prtInfo() { print "foo or END" }
'
的返回值,等等。