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