我的任務是制作迷你 T9。類似于舊手機中的內容,但用戶不應多次單擊以獲取信件。例如,如果用戶列印 2,則可以是 A、B 或 C,如果他列印 23,則為 {'a', 'b', 'c'} 和 {'d', 'e' 的組合, 'F'}。我還有一個包含名稱串列的檔案。程式應回傳具有 {'a', 'b', 'c'} 和 {'d', 'e', 'f'} 組合的所有名稱。
談論這個問題:我試圖制作一個由帶有我需要的字母的元素組成的二維陣列。我還寫了一段代碼,它應該檢查一切是否正常,在這里我確實有問題。運行程式的結果是隨機符號或只是空虛。此外,陣列元素的數量是錯誤的,如螢屏截圖所示。
我有這樣的代碼:
int main (int argc, char **argv)
{
int size = strlen(argv);
char letters[size][4];
for (int i = 0; argv[1][i] != '\0'; i )
{
switch(argv[1][i])
{
case '2':
letters[i][4] = 'a', 'b', 'c', '\0';
case '3':
letter[i][4] = 'd', 'e'. 'f', '\0';
case '4':
letter[i][4] = 'g', 'h'. 'i', '\0';
case '5':
letter[i][4] = 'j', 'k'. 'l', '\0';
case '6':
letter[i][4] = 'm', 'n'. 'o', '\0';
case '7':
letter[i][4] = 'p', 'q'. 'r', 's';
case '8':
letter[i][4] = 't', 'u'. 'v', '\0';
case '9':
letters[i][4] = 'w', 'x', 'y', 'z';
}
}
// the next code was written to check if everything is OK
for (int e = 1; e <= sizeof(letters)/sizeof(letters[0]); e )
{
for (int j = 0; j <= sizeof(letters[0])/sizeof(letters[0][0]); j )
{
printf("Letters[%d][%d]: %c\n", e, j, letters[e][j]);
}
}
}
我將非常感謝您的幫助。
uj5u.com熱心網友回復:
以下是我修復的問題:
- 添加了缺少的包含。
- 檢查是否設定了 argv[1],否則顯示用法。
strlen(argv[1])而不是strlen(argv)沒有意義。- 使用
strcpy()而不是無效的語法。 lettres[i]當您列印超過初始尾隨的資料時,在回圈中初始化'\0'。- 在每種情況下都添加了中斷。
- 固定范圍
e是差一倍 - 它的固定范圍不
j應該是.<<=
#include <stdio.h>
#include <string.h>
int main (int argc, char **argv) {
if(argc != 2) {
printf("usage: %s integer\n", *argv);
return 0;
}
int size = strlen(argv[1]);
char letters[size][5];
for (int i = 0; argv[1][i]; i ) {
memset(letters[i], 0, sizeof(*letters) / sizeof(**letters));
switch(argv[1][i]) {
case '2':
strcpy(letters[i], "abc");
break;
case '3':
strcpy(letters[i], "def");
break;
case '4':
strcpy(letters[i], "def");
break;
case '5':
strcpy(letters[i], "jkl");
break;
case '6':
strcpy(letters[i], "mno");
break;
case '7':
strcpy(letters[i], "pqrs");
break;
case '8':
strcpy(letters[i], "tuv");
break;
case '9':
strcpy(letters[i], "wxyz");
break;
}
}
for (int e = 0; e < sizeof(letters)/sizeof(letters[0]); e ) {
for (int j = 0; j < sizeof(letters[0])/sizeof(letters[0][0]); j ) {
printf("Letters[%d][%d]: %c\n", e, j, letters[e][j]);
}
}
}
這是572的輸出:
Letters[0][0]: j
Letters[0][1]: k
Letters[0][2]: l
Letters[0][3]:
Letters[0][4]:
Letters[1][0]: p
Letters[1][1]: q
Letters[1][2]: r
Letters[1][3]: s
Letters[1][4]:
Letters[2][0]: a
Letters[2][1]: b
Letters[2][2]: c
Letters[2][3]:
Letters[2][4]:
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/520275.html
標籤:数组C
