给定代码有什么问题

时间:2012-01-19 16:13:08

标签: c pointers segmentation-fault

我只是在C中学习一些指针,我碰巧知道使用* one可以取消引用指针。所以我编写了以下代码来检查它。

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

char *findChar(char *s, char c){
  while(*s!=c){
     s++;
  }
  return s;
}

int main(){
  char myChar='a';
  const char myString[]="Hello abhishek";
  char *location;
  location = findChar(myString,myChar);
  puts(location);
  char temp = *location;
  printf(temp);
}

我假设temp应该得到字符指针位置指向的值,但是这个程序给了我一个分段错误。请清楚我做错了什么?

3 个答案:

答案 0 :(得分:7)

以下内容不正确:

 char temp = *location;
 printf(temp);

如果要打印出char,请使用以下命令:

 char temp = *location;
 printf("%c\n", temp);

printf()的第一个参数应该是格式字符串。

答案 1 :(得分:0)

printf的第一个参数应为char*(格式为),而不是char

尝试printf("%c\n",temp);

顺便说一句,要查看数组中myChar的索引,您可能需要打印location-myString

答案 2 :(得分:0)

printf导致分段错误,因为printf需要一个temp指针,你可以将一个char传递给它。