我只是在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应该得到字符指针位置指向的值,但是这个程序给了我一个分段错误。请清楚我做错了什么?
答案 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传递给它。