Re: [問題] 如何把一個char陣列轉成int陣列
最近版上戰得正兇,
所以可能沒人在意這個問題,
就讓小弟獻個醜。
※ 引述《freexq (快樂蕃茄)》之銘言:
: 開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
: Dev-C++ 4.9.9.2
: 問題(Question):
: 我有一個char陣列,char a[10]="123456789"
: 我想把它轉成一個int陣列,int b[10]={1,2,3,4,5,6,7,8,9}
: 錯誤結果(Wrong Output):
: 編譯出現錯誤訊息
: invalid conversion from `char' to `const char*'
: initializing argument 1 of `int atoi(const char*)'
錯誤訊息已經告訴你很清楚了。
你送進去 atoi() 的每個 a[i] 是 char 並不是 const char*
而atoi 接受的型別是 const char*
compiler 沒辦法也不應該幫你做轉型,
所以編譯發生錯誤。
: 看不懂XD
: 程式碼(Code):(請善用置底文網頁, 記得排版)
: #include <iostream>
: #include <cstring>
: #include <cstdlib> //for system()
: using namespace std;
: int main( )
: {
: char a[10]="123456789";
: int b[10]={0};
: int num=strlen(a);
: for(int i=0;i<num;i++)
: {
: b[i]=atoi(a[i]); //error!!這裡出現錯誤
: cout<<b[i]<<endl;
: }
: system("pause");
: return 0;
: }
: 補充說明(Supplement):
: 請各位先進教教小弟錯誤訊息是什麼意思
: 以及幫我修改程式碼來達到上述要求。
: 感恩!!
更改的方式很簡單,
就想辦法讓你送進去atoi的參數型別是 const char * 就好了
所以程式碼會長得像以下這樣
int main( )
{
// 宣告成 const char* array
const char *a[10]= {"1", "2", "3", "4", "5",
"6", "7", "8", "9", "10"};
int b[10]={0};
for(int i=0;i<10;i++)
{
b[i]=atoi(a[i]);
cout<<b[i]<<endl;
}
system("pause");
return 0;
}
以上,大功告成!!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.230.199.221
推
08/28 01:56, , 1F
08/28 01:56, 1F
→
08/28 10:28, , 2F
08/28 10:28, 2F
→
08/28 11:52, , 3F
08/28 11:52, 3F
→
08/28 11:53, , 4F
08/28 11:53, 4F
→
08/28 11:53, , 5F
08/28 11:53, 5F
推
08/28 23:27, , 6F
08/28 23:27, 6F
推
08/28 23:47, , 7F
08/28 23:47, 7F
→
08/29 01:09, , 8F
08/29 01:09, 8F
→
08/29 01:10, , 9F
08/29 01:10, 9F
推
09/01 12:22, , 10F
09/01 12:22, 10F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):