我的任務是使用函式將 char* 陣列轉換為 int 陣列。我是 C 的新手,所以如果這是一個簡單的修復或我剛剛沒有注意到的簡單解決方案,我深表歉意。
這是我目前擁有的代碼:
#include<stdio.h>
#include<stdlib.h>
int convert(char* str[], int length);
int main(void)
{
int result[50], i, length = 4;
char *str[] = {"7", "1", "14", "15"};
result[4] = convert(str, 4);
for(i = 0; i < length; i )
{
printf("%d ", result[i]);
}
printf("\n");
return 0;
}
int convert(char* str[], int length)
{
int i;
int arr[50];
for(i = 0; i > length; i )
arr[i] = atoi(str[i]);
return arr[50];
}
目前的輸出是這樣的:
832 832 832 832
本質上,代碼試圖做的是轉換
char *str[] = {"7", "1", "14", "15"};
進入這個(輸出):
7 1 14 15
任何幫助,將不勝感激!:)
uj5u.com熱心網友回復:
移動了convert()上面的定義,main()因此不需要原型。正如您知道result陣列的大小,將它作為引數傳遞更清晰,并且正如@kaylum 上面提到的,回傳型別 ofint顯然是不正確的。回圈是錯誤的(應該是i < length)。即使您嘗試過,也無法回傳本地陣列arr,因為函式回傳時它將超出范圍。 return arr[50]指的是超出范圍的元素。在main()中,運算式result[4] =設定第 4 個元素,結果的其余部分包含未定義的資料。
#include <stdio.h>
#include <stdlib.h>
void convert(int length, char *str[length], int result[length]) {
for(int i = 0; i < length; i )
result[i] = atoi(str[i]);
}
int main(void) {
char *str[] = {"7", "1", "14", "15"};
int result[sizeof(str) / sizeof *str];
convert(sizeof str / sizeof *str, str, result);
for(int i = 0; i < sizeof(str) / sizeof *str; i ) {
printf("%d ", result[i]);
}
printf("\n");
return 0;
}
考慮使用strtol()而不是,atoi()因為后者不允許您檢測錯誤輸入。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/512305.html
標籤:数组C阿托伊
