2010-10-15 35 views
7

Tôi đang lập trình một vi điều khiển trong C và là một phần của nó muốn hiển thị các chữ cái nhất định trên màn hình 7 đoạn. Mỗi chữ cái có một số tương ứng làm cho màn hình 7 đoạn hiển thị chữ cái. Không có mô hình thực sự nào khiến nó chỉ được tạo bằng cách thêm các bit trên màn hình 7 đoạn cần thiết để hiển thị chữ cái nên nó sẽ rất tuyệt nếu tôi có thể tạo một số từ điển để làm điều này.Cách tạo từ điển trong C?

Nếu tôi đang sử dụng C# hoặc thứ gì đó tôi muốn tạo từ điển và sau đó thêm các chữ cái làm khóa và số làm giá trị nhưng theo như tôi biết tôi không thể làm điều này trong C. Có cách nào khác làm điều đó hoặc làm tôi nên chỉ cần viết một chức năng như int displayletter(char letter) mà sử dụng một loạt các báo cáo nếu trả về các số phải không?

Xin lỗi nếu đó là một câu hỏi ngu ngốc, tôi là khá mới để C.

+0

Hãy tìm một triển khai trie trong C, thất bại, một hashtable cũng có thể hoạt động. – leppie

Trả lời

6

Bạn có thể tạo một mảng

int values[26]; 

và cư nó với các giá trị cho mỗi chữ cái, tuy nhiên họ đang tính

Sau đó tạo một chức năng mà phải mất một nhân vật và trả về một int

int GetValueFromChar(char c) 
{ 
    return values[c - 'A']; 
} 

Điều này là đơn giản, vì nó giả sử bạn sẽ chỉ sử dụng chữ cái hoa trong một bộ ký tự ASCII, nhưng bạn sẽ nhận được ý tưởng.

+1

Điều gì sẽ xảy ra nếu máy tính đang sử dụng bộ ký tự EBCDIC chứ không phải ASCII? – Swiss

+4

Trừ khi bạn là IBM vào năm 1975, nó sẽ không phải là EBCDIC. –

+0

@Swiss: đó là một điểm tốt. Tôi giả sử một bộ ký tự ASCII, nhưng cơ chế cơ bản phải giống nhau. Tôi đã cập nhật câu trả lời để phản ánh giả định đó. –

0

Dễ nhất là sử dụng chức năng và câu lệnh chuyển đổi ... Tôi tin rằng mục đích này là câu lệnh chuyển đổi sẽ rất hiệu quả. Tôi cũng xếp thứ hai thư viện Judy là một thư viện tốt để sử dụng cho việc lập bản đồ hiệu quả, nhưng nó là loại quá mức cần thiết cho việc này.

Các vấn đề liên quan