2013-02-20 71 views
4

我想unsigned const char *轉換爲char const *傳遞到strcpy功能從簽名爲const char *類型轉換爲字符常量*

請提出了一些方法

+0

現在出現錯誤「非法轉換」 – Sijith 2013-02-20 06:31:40

+1

「現在出現錯誤」 - 您現在的意思是什麼?你做了什麼 - 你的代碼在哪裏?你能否把所有這些都加入到這個問題中(而不是在評論中)? – jogojapan 2013-02-20 06:38:59

回答

1

這對我的作品;你在想什麼?

#include <stdio.h> 
#include <string.h> 

int main(int argc, char ** argv) 
{ 
    const char foo[] = "foo"; 
    unsigned const char * x = (unsigned const char *) foo; 

    char bar[20]; 
    strcpy(bar, (const char *)x); 

    printf("bar=[%s]\n", bar); 
    return 0; 
} 

請注意,如果你是不是嘗試過的(無符號爲const char *)指針進入的strcpy的第一個參數,那麼你可能試圖做一些你不應該(和編譯器是正確的,它標誌作爲錯誤);因爲strcpy()將寫入由其第一個參數指向的內存,而const指針是一個不應寫入數據的指針。

1

在ANSI CI相信這應該只是工作如:

#include <string.h> 

int main() { 

    const char *s="test"; 

    unsigned const char *d = s; 
    char dest[1000]; 

    strcpy(dest,d); 
} 

你可以嘗試加入鑄:

#include <string.h> 

int main() { 

    const char *s="test"; 

    unsigned const char *d = s; 
    char dest[1000]; 

    strcpy(dest,(const char *) d); 
} 
7
(const char *) my_signed_char 

在C++中有更地道的方式來投這一點,但因爲你使用的是strcpy,所以你不會編程習慣C++。

相關問題