C89 GCC(GCC)4.6.3NUL终止指针
您好,
我得到一个堆栈转储*搜索= '\ 0';我认为可以终止一个字符串。
char *ptr_name = "[email protected]";
char *search = ptr_name;
search = strchr(ptr_name, '@');
search++;
*search = '\0';
非常感谢您的任何建议,
C89 GCC(GCC)4.6.3NUL终止指针
您好,
我得到一个堆栈转储*搜索= '\ 0';我认为可以终止一个字符串。
char *ptr_name = "[email protected]";
char *search = ptr_name;
search = strchr(ptr_name, '@');
search++;
*search = '\0';
非常感谢您的任何建议,
char *ptr_name = "[email protected]";
创建一个字符串常量,并且不能修改。
为了得到您期待的结果,您需要使用数组char arr_name[] = "[email protected]";
为"[email protected]"
分配内存 - 或者在运行时动态使用malloc
。
你的程序如下:
#include <stdio.h>
#include <string.h>
int main()
{
char arr_name[] = "[email protected]";
char *search = arr_name;
printf("%s \n", arr_name);
search = strchr(arr_name, '@');
search++;
*search = '\0';
printf("%s \n", arr_name);
return 0;
}
输出:
$ ./a.out
[email protected]
[email protected]
$
不是当它是一个文字常量,你不能。你可以strcpy()将它变成堆栈或堆变量,然后你可以修改它。
你可能写常量数据。 – Nick 2012-04-25 10:09:43
http://c-faq.com/decl/strlitinit.html – cnicutar 2012-04-25 10:09:53
'ptr_name'不是一个字符串。它是一个指向(只读)字符串的指针。 – pmg 2012-04-25 10:10:14