Ham*_*mza 6 c printf pointers segmentation-fault
这可能很简单,但我似乎无法让它工作.
我有这个非常简单的代码片段:
#include <stdio.h>
#include <string.h>
int main(void)
{
char buf[100];
char *p = buf;
strcpy(p, "Test string");
printf("%s\n", *p);
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时会导致分段错误.GDB输出:
Program received signal SIGSEGV, Segmentation fault.
0xb76af3b3 in strlen () from /lib/i686/cmov/libc.so.6
Run Code Online (Sandbox Code Playgroud)
但我仍然没有得到它.
评论将不胜感激,谢谢.
Il-*_*ima 13
当你写作
printf("%s\n", *p);
Run Code Online (Sandbox Code Playgroud)
的*p将在值p[0]是一个字符.然而,printf正在寻找一系列字符,从而导致它出现段错误.请记住,在C中,字符串只是字符数组,而数组实际上是指向第一个元素的指针,这就是您不需要取消引用的原因.
要解决此问题,请删除*以获取:
printf("%s\n", p);
Run Code Online (Sandbox Code Playgroud)
zil*_*n01 10
你将一个角色传递给printf; 你应该传递指针.
char buf[100];
char *p = buf;
strcpy(p, "Test string");
printf("%s\n", p); // p, not *p
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16519 次 |
| 最近记录: |