c - 在 C 中读取字符时出现段错误

标签 c struct

<分区>

我的程序编译成功。它读取所有整数值,但每当我尝试输入字符时,它都会出现段错误。我不知道是什么问题。这是我的代码

#include <stdio.h>

struct soldier
{
    int skill;
    int superior;
};
struct soldier army[1000000];
int n;
int skillSum=0;
void findSkillSum(int);
int main()
{
    int m,parent,child,s,update,i;
    char command;
    scanf("%d %d",&n,&m);
    // struct soldier army[n+10];
     for(i=1;i<=n;i++)
      scanf("%d",&army[i].skill);
    army[1].superior =0;
    for(i=1;i<n;i++)
    {
        scanf("%d %d",&parent,&child);
        army[child].superior = parent;

    }
    for(i=1;i<=m;i++)
    {
           scanf("%c",&command);
           // s=command[2]-48;
           if(command=='Q')
           {
              scanf("%d",&s);
              findSkillSum(s);
              printf("%d",skillSum);
              printf("\n");

           }
           else
           {
               scanf("%d",&s);
               scanf("%d",&update);
               army[s].skill=update;
           }

     }


}

void findSkillSum(int s)
{
   int i;
   for (i=1;i<=n;i++)
    {
        if (army[i].superior==s)
        {
            skillSum+=army[i].skill;
            findSkillSum(i);
        }
    }
 }

最佳答案

在 %c 之前应该添加一个空格来获取下一个非空白字符

 scanf(" %c",&command);

关于c - 在 C 中读取字符时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38565252/

相关文章:

c - 在c中打印多八位字节字符

c - 如何在 C 中使用 C++ 类?

android - 需要帮助编译适用于 Android 的 mkbootimg 二进制文件

c++ - 获取具有类似控制台行为的目录路径

c - 结构数组指针

c - 结构双输出

Swift 嵌套的可选值类型(结构)和修改属性

Matlab,结构为矩阵形式,矩阵以正确的方式定向

api - Golang 访问原始 Podio 字段值

c - 在 free() 之后使用指针