c語言中invalid conversion from char to const char怎麼改

2022-05-22 17:46:17 字數 4034 閱讀 3957

1樓:

你這**對 字元陣列指標的使用有問題。

你定義了:char h[30],但是h[30]卻是指從字元陣列第一個開始的第31個字元,已經溢位了。

正確的使用這個陣列指標的方法是 h 或者 &h[0],後面的也都錯了。

如果你定義的是陣列指標,那麼應該是 char* h[30]。

2樓:匿名使用者

首先是編譯問題:

if(strcmp(h[30],person[i].name)==0)

這句使編譯出錯。strcmp的原型為int strcmp (const char*, const char*);

而h[30]為char型別。你這麼使用自然有錯。

其次是邏輯問題:

scanf("%s",&h[30]);

陣列下標範圍是0到n-1;所以你最多可以使用&h[0]到&h[29]。

類似的在for迴圈中也有類似的陣列越界問題。

建議你最好看一下陣列那塊的介紹。

3樓:匿名使用者

1、const char*是指向常量的指標,而不是指標本身為常量,可以不被初始化.

該指標可以指向常量也可以指向變數,只是從該指標的角度而言,它所指向的是常量,

通過該指標不能修改它所指向的資料.

2、const char*是不能直接賦值到char*的,這樣編譯都不能通過,理由:假如可以的話,

那麼通過char*就可以修改const char指向的內容了,這是不允許的.

所以char*要另外開闢新的空間

string str = "dasfas";

char* p = (char*)str.c_str();

還有就是把const指標,轉換成非const指標,目的不是為了修改指標指向的值,而往往是為了傳參的方便。不得已才使用的。或者用 strcpy的方法

c語言invalid conversion from `const char*' to `char' 是什麼回事?我就是把一個char數

4樓:來自寶田寺年輕的鳶尾花

從錯誤的提示來看,你是要把陣列或者指標轉換成字元來用了,而函式本身要求的引數型別是字元,最好貼點**上來,不要多,就是定義和呼叫的部分就行。

這種問題一般都是基本的小問題

高人看看下面哪錯了,怎麼改啊? 老出現錯誤 error: invalid conversion from `const char*' to `char' 35

5樓:匿名使用者

你的程式我除錯了一下:

c語言不支援這樣的直接給字串賦值的處理,除非是定版義時初始權化,

必須使用字串處理函式;比如說*e="one";必須改成strcpy(e,"one");這樣修改之後還要新增一個標頭檔案#include因為strcpy是包含在string.h裡的;

這樣修改之後,執行就可以了

如果直接把*e改成e是不行的,輸出會是亂碼因為e是一個指標變數,不能那樣賦值

不知道我的回答樓主是否滿意,如果有更好的解決方法,希望指教,我也在學c,我們可以互相**下

6樓:匿名使用者

看來你對字元來

串和指源針並不是很理解。就你的**簡要介紹一下。

e : 指向字串的指標。

*e : e指標指的字串的第一個字元,即*e是一個字元。

「\0」 : 這個其實倒沒什麼問題,只是用雙引號時,「\0」所代表的是一個常量字串。

"one" : 這個沒問題,就是常量字串。

對於常量字串,應該用const char*型別的指標來引用。

程式修改:

void numtostr (int num, const char* str)}

7樓:匿名使用者

void swap(int n,char *e)改為void swap(int n,char e)或者void swap(int n,char **e)試試

8樓:匿名使用者

把*e=...改成e=...就行了。

c語言[error] invalid conversion from 'char' to 'const char*' [-fpermissive]

9樓:匿名使用者

if((strcmp(u->id,id[20])==0)//比對使用者名稱

這裡有問題,改成

if((strcmp(u->id,id)==0)//比對使用者名稱這樣才是兩個字串的比較

但是你這裡u沒有初始化,他是一個指標,系統是不自動給他分配空間的id 也沒有被初始化

10樓:草叢裡的落葉

改為 if (strcmp(u->id, id) == 0)//比對使用者名稱 \\沒有初始化兩個char陣列比較起來可能會出現問題

c語言,報錯! invalid conversion from 'char' to 'const char*'(成績排序題)

11樓:聽不清啊

#include

#include

int main()

for(i=0;i

12樓:荌繎丶誑嘢菰漃

函式原型:char * strcpy( char * s1, char * s2 );

13樓:匿名使用者

scanf("%s %d",n,&c)改成scanf("%s %d",n,&c[count])

報錯:invalid conversion from const char* to char

14樓:gta小雞

第一個成員num型別不符,將初始化列表中的01修改為"01"或者將num型別修改為int。

一直出現invalid conversion from char to char。求指導,c語言的

15樓:匿名使用者

這個函式想實現什麼功能啊 返回長得字元陣列 可是隻是通過max 和min 的比較 並不能代表陣列的實際字串大小 所以不知你這個函式的功能

16樓:藍天博士

很顯然,longer是一個指標函式,他應該返回指標型別,但是你在定義函式的時候卻定義成字元型別,導致型別不匹配。

改正方法:第三行函式申明改為char *longer(char*array,char*num_array,int x,int y);

倒數第七行:longer前面加個*號,即改為char *longer,這樣就可以了

17樓:

char longer(char*array,char*num_array,int x,int y)

改為char * longer(char*array,char*num_array,int x,int y)

這個函式的返回值應該是指向char型的指標.

invalid conversion from `char*' to `char' 是什麼錯誤

18樓:大野瘦子

是一個字元指標(char*)賦給了一個字元型(char)變數,導致報錯。

例如:string s = "abc";

char* c = s.c_str();

這時會報錯:invalid conversion from `const char*' to `char*'

解決方法: char* c = const_cast(s.c_str());

19樓:匿名使用者

說明你把一個字元指標(char*)賦給了一個字元型(char)變數,導致報錯

20樓:手機使用者

到這個問題?因為ruby是採用us-ascii,所以才會出現這種問題

c語言中作用C語言中作用

取決於在scanf中使用還是在printf中使用。在scanf中使用,則新增了 的部分會被忽略,不會被引數獲取。例如輸入為 12 abc那麼12將會讀取到變數a中,但是後面的abc將在讀取之後拋棄,不賦予任何變數 例如這裡的字元陣列b 在printf中使用,表示用後面的形參替代的位置,實現動態格式輸...

請問C語言中,1,請問C語言中,

是求餘數的意思,a b也就是a除以b餘幾 1 2 0餘1,那1 2 1 這裡 是取餘數的意思 1除以2 餘數就是1咯 計算步驟的話。cpu有直接的整數除法指令,商和餘數分別放在不同的暫存器裡。這些都交給編譯器了,我們不用理了 取模運算。也就是1除2的餘數?結果 1 除數是2的時候很特殊.a 2 等同...

C語言中exit怎麼用,在C語言中,exit 0 是什麼意思

exit 結束當前程序 當前程式 在整個程式中,只要呼叫 exit 就結束。return 是當前函式返回,當然如果是在主函式main,自然也就結束當前程序了,如果不是,那就是退回上一層呼叫。在多個程序時.如果有時要檢測上程序是否正常退出的.就要用到上個程序的返回值。exit 1 表示程序正常退出.返...