试图在输入(char数组)中间返回char给出"分段错误(核心转储)"?

Jac*_*b M 0 c

简而言之,我必须能够在输入(char数组)的中间返回字符,作为我们第一个C赋值的一部分.但是,到目前为止,我的代码是返回"Segmentation fault(core dumped)".我稍微阅读了一下,并了解到基本上我可能正试图访问/修改"我无法使用"的数据,可以这么说.这是我的代码:

#include <stdio.h>
#include <string.h>

char input[30];
int inputLen;
char midChar;

int main()
{
    printf("Type in some text, and the press the Return/Enter key: ");
    fgets(input,sizeof(input),stdin);
    printf("\nYour input: %s",input);
    inputLen = strlen(input)-1;
    printf("Length of your input is %d characters.",inputLen);

    if((inputLen % 2) == 0) {
        midChar = input[(inputLen/2)+1];    // >>> PROBLEM HERE <<<
    }
    else {
        midChar = input[((inputLen+1)/2)+1];    // >>> PROBLEM HERE <<<
    }
    printf("%s",midChar);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这两条线>>> PROBLEM HERE <<<是我认为我已经缩小到成为问题根源的线.

请注意:我参加了Java的入门课程,上学期花了一半时间专门研究MATLAB,所以我确实有一点编程直觉 - 但是,我是C的100%初学者,所以我会感谢你们提供的任何帮助背后的一些明确的阐述.我不熟悉C所特有的大多数函数/语法,所以我相信对于那些精通这门语言的人来说,上面会有一些令人畏缩的代码行.如果是这种情况,请随时在答案中包含任何其他提示.谢谢!

Lig*_*ica 5

你正在打印一个charwith %s,所以程序将你的输入视为一个指针(对一个char数组).这不是一个有效的东西.

你的意思%c是单个角色.

您的编译器应该告诉您这一点.打开警告!

  • `-Wall -Wextra -pedantic` (2认同)