【问题标题】:Trying to assign a set of characters to a string尝试将一组字符分配给字符串
【发布时间】:2019-01-02 15:29:50
【问题描述】:

我试图将一组 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();
}          

【问题讨论】:

  • 你能举一个输入和预期输出的例子吗?
  • scanf("%d %c",&amp;choc_num,choc_type);-->scanf("%d %c",&amp;choc_num, &amp;choc_type);.
  • 输入:1 A、3 B、2 A 输出:ABBBAA
  • 将变量命名为“字符串”并不能使其成为一个变量。

标签: c string char


【解决方案1】:

你应该把choc_type的地址传给scanf()

scanf("%d %c",&choc_num, &choc_type);
                         ^

C 中,字符串实际上是由空字符'\0' 终止的一维字符数组,您在填充后在String 数组中添加空字符。在外部for 循环之后,您应该这样做:

String[F] = '\0';

您的代码有改进的余地,例如,您应该对用户给出的输入进行一些验证,检查scanf() 返回值等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-09
    • 2019-10-13
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    • 2022-01-14
    • 2022-10-17
    相关资源
    最近更新 更多