从C

时间:2016-11-26 19:12:28

标签: c arrays pointers char

使用以下C函数,我想从某个字符串中检索索引idx处的字母:

char get_letter(char *str, int idx)
{
    return *(str + idx);
}

例如,以下内容:

char s[] = "Barack";
get_letter(s,2); 

应该返回字母' r'。

这是整个程序(可执行文件的名称是"检索"):

int printf(const char * restrict, ...);
char get_letter(char *, int);

int main(int carg, const char **varg){
  if (carg != 2) return -1;  
  printf("%s", get_letter(varg[1],1));
  return 0;           
}

char get_letter(char *str, int idx)
{
return *(str + idx);
}

当我运行程序时(例如:./ reveve test),而不是收到字母" e",我收到一条错误消息("分段错误:11")。 这里出了什么问题?

3 个答案:

答案 0 :(得分:1)

可以用C语言打印字符如下:

Users

工作代码:

char c = 'j';
printf("%c",j);

答案 1 :(得分:0)

我明白了......在打印功能中它必须是%c而不是%s。

答案 2 :(得分:0)

您正在返回一个char *,但您的返回类型是char。 将您的退货单更改为return str[idx];

为什么你需要一个功能呢?你可以写s[idx]。我很好奇这个原因。