[英]Copying Character Pointer into another Character Pointer in C Without strcpy
我在將一個指針的內容復制到另一個指針時遇到一些問題。 我無法獲取* s
內容復制到* a
。 如果刪除* a
的凹凸,它將僅復制s
的最后一個字符。 同樣,不允許使用任何字符串庫函數或任何數組符號。 抱歉,如果格式不佳,這是我的第一篇文章。 在此先感謝您的幫助。
char* copy( char *s )
{
char *a = (char *) malloc(sizeof(char)*length(s));
if (s == NULL)
{
printf("ERROR: OUT OF MEMORY\n" );
return 0;
}
while( *s != '\0' )
{
*a = *s;
s++;
a++;
}
*a = '\0';
return a;
}
切勿修改已分配的指針的值。 如果這樣做,可能會丟失該地址並無法釋放它。
char* copy( const char *s )
{
char *a = malloc(length(s)+1);
if (a == NULL)
{
perror( "malloc failed" );
return NULL;
}
char *c = a;
while( *s != '\0' )
{
*c = *s;
s++;
c++;
}
*c = '\0';
return a;
}
測試非常簡單:
int main(int argc, char *argv[])
{
const char *s = "this is a test string";
char *a;
if (NULL != (a = copy(s))) {
printf("The copy is: %s\n", a);
free(a);
}
}
結果是:
副本是:這是一個測試字符串
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.