涉及数组的简单C程序无法执行

时间:2017-03-14 13:19:20

标签: c

我有一个家庭作业问题,要求我将用户输入的单词转换为Pig Latin,方法是将单词的第一个字母移到最后并添加一个ay。例如,星期二成为uesdayTay。应重复此过程,直到用户键入STOP。

我对数组很新,所以我可能错误地使用它们,但我找不到原因。我编写的程序可以编译,但每次执行时都会崩溃。我确信这个程序很简单,但这是我的代码:

{
    "id": "someString",
    "servers": [{
        "name": "ServerName",
        "bases": [{
            "name": "Base 1",
            "status": true
        }]
    }]
}

任何人都可以帮帮我吗?我发现阵列相当混乱。谢谢!

1 个答案:

答案 0 :(得分:1)

scanf("%s", input_word[n])

我会阻止你在那里。

您将input_word声明为指针数组,但这些指针是1.未初始化2.未指向您需要分配的有效内存。

而是首先声明一个数组来保存来自用户的输入

char input_word[100];

现在为了简单起见,使用fgets从命令行中读取

fgets(input_word, sizeof(input_word), stdin);

现在删除尾随\ n,如果有的话

 char* p = strchr(input_word, '\n'); 
 if (p) 
 {
   *p = '\0';
 }

现在你在input_word

中有“Tuesday \ 0”(如果你输入了那个词)

为新单词添加另一个数组

char output_word[100] = { '\0' };

略过第一个字符并复制到字符串结尾

strcpy(output_word, input_word + 1);

现在取第一个字符并添加

strncat(output_word, input_word, 1);

然后使用strcat

添加其余部分

并使用像输入的字符串长度等支票撒上代码