简而言之,我必须能够在输入(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所特有的大多数函数/语法,所以我相信对于那些精通这门语言的人来说,上面会有一些令人畏缩的代码行.如果是这种情况,请随时在答案中包含任何其他提示.谢谢!
你正在打印一个charwith %s,所以程序将你的输入视为一个指针(对一个char数组).这不是一个有效的东西.
你的意思%c是单个角色.
您的编译器应该告诉您这一点.打开警告!