我想列出一個由索引號召來的消息。所以我會得到輸入13,然後應該打印消息13。我的問題是我需要很多這些消息,他們需要多行,這將佔用我的主文件中的很多空間。所以我的問題是如何存儲所有這些消息並在需要時調用它們?C如何製作消息列表?
回答
我會將它們存儲在char*
的數組中的單獨源文件中。該數字可以簡單地作爲數組的索引。
'char **'可能更合適:每個消息一個'char *'。 –
是的,通過'char *'數組,我的意思是一個'char *'數組。 –
根據我對你的問題的理解。你應該使用字符串數組。因爲數組是存儲和檢索數據的最快方式。你可以像下面這樣使用:
char a[2][1000];
strcpy(a[0], "I hello how r u");
strcpy(a[1], "i m fine");
你可以通過數組索引來訪問消息。如果你想訪問第一條消息,那麼你將得到一個[0],第二條消息a [1],第三條a [2]等等。
請糾正我如果我錯了。
雖然你可以用這些字符串初始化'a',而不是手動執行'strcpy()'。 –
一個簡單的方法
char const * getMessageByIndex(int const index) {
static char const * const messages[] = {
"I am message 0",
"I am message 1",
// ...
};
int const numMessages = sizeof messages/sizeof messages[ 0 ];
if((index < 0) || (numMessages <= index) {
// error handling
return "index out of bound";
}
return messages[ index ];
}
賺指數文件和消息文件。並通過索引文件讀取消息。
例如)*錯誤處理被省略。
賺指數和郵件文件:
#include <stdio.h>
const char* message[] = {
"1st message",
"2nd message\ninclude newline",
"3rd message"
//...
};
int main(){
FILE *indexFile, *textFile;
long loc=0;
int i, size, len;
size=sizeof(message)/sizeof(char*);
indexFile=fopen("index.dat", "wb");
textFile=fopen("message.dat", "wb");
for(i=0;i<size;++i){
loc = ftell(textFile);
fwrite(message[i], sizeof(char), len=strlen(message[i]), textFile);
fwrite(&loc, sizeof(long), 1, indexFile);
fwrite(&len, sizeof(int), 1, indexFile);
}
fclose(textFile);
fclose(indexFile);
return 0;
}
使用示例:
#include <stdio.h>
#include <stdlib.h>
char* readMessage(int n){
char *message;
FILE *indexFile, *textFile;
long loc;
int i, size, len;
int recordSize = sizeof(long) + sizeof(int);
indexFile=fopen("index.dat", "rb");
textFile=fopen("message.dat", "rb");
loc = recordSize * n;
fseek(indexFile, loc, SEEK_SET);
fread(&loc, sizeof(long), 1, indexFile);
fread(&len, sizeof(int), 1, indexFile);
message=(char*)malloc(sizeof(char)*(len+1));
fseek(textFile, loc, SEEK_SET);
fread(message, sizeof(char), len, textFile);
message[len]='\0';
fclose(textFile);
fclose(indexFile);
return message;
}
int main(){
char *mes;
int n;
n =1;
mes = readMessage(n);//zero origin
printf("message %d is \"%s\"\n", n, mes);
free(mes);
return 0;
}
- 1. 如何從C複製COPYDATASTRUCT消息?
- 2. 如何繪製消息序列圖?
- 3. C#/ Json.net /如何反序列化消息?
- 4. GWT,如何爲@DefaultStringArrayValue消息製作i18n
- 5. 如何創建消息列表屏幕?
- 6. 消息系統mysql,消息列表
- 7. 將MSMQ消息作爲列表接收
- 8. 如何複製C#列表#
- 9. 複製的消息隊列
- 10. 如何製作列表?
- 11. 我如何製作列表
- 12. MFMessageComposeViewController:如何限制發送消息作爲蜂窩消息而不是iMessage
- 13. PL/JSON消息列表
- 14. 顯示消息的列表
- 15. 列表框通知消息
- 16. PHP SQL - JSON - 消息列表
- 17. 獲取SMS消息列表?
- 18. 空列表框消息wp7
- 19. 如何製作表格如果tableview爲空,則顯示消息並顯示消息?
- 20. 如何製作一個列表兩列?
- 21. 如何處理MUC聊天消息 - 複製消息
- 22. 如何製作實體表列表
- 23. 從C#Win CE發送消息到SQL Server消息隊列CE
- 24. 消息隊列 - 動態消息大小 - Visual C
- 25. 如何控制或管理JMS隊列?例如。改變隊列中的消息順序,刪除消息等
- 26. 如何統計窗口消息隊列中的消息?
- 27. 如何使用JMX監視消息隊列消息
- 28. 如何查看出站MSMQ消息隊列中的消息?
- 29. 如何使用rabbitMQ將消息發送到消息隊列?
- 30. 如何使用Facebook的圖表API發佈消息到列表
雖然可能是矯枉過正滿足您的需求,POSIX信息目錄將做這件事。 – WhozCraig