我是編程新手,我正在開發一個從應用程序中獲取數據的C應用程序。我打開並分析這個外部文件的每一行。 循環內部我使用了一個解析器函數,我之前創建這個函數是爲了獲得所需的數據並解析它。在while循環中使用strcpy,C
這是行之有效的,但現在我需要將每個解析的行(每個消息)保存在另一個名爲buffer的數組中。 每條消息被限制爲200個字符並緩衝到1000個字符,因此緩衝區陣列中可以存儲5條消息。 我的外部文件有超過5條消息,所以當第6條消息到達時,第1條消息應該從緩衝區中刪除。 我在這裏遇到問題,因爲我不知道如何將值存儲在緩衝區中而不覆蓋它。
這是主要的功能:
void main(void) {
FILE *fp = fopen ("file","r"); //open file
char line[200];
char parsed_line[200];
char *message;
char buffer [1000];
if (fp==NULL) printf ("the file open was not succeed");
else{
printf ("Device open!");
while(fscanf (fp, "%s", line) > 0){
if(strstr(line, "$GPRMC")){
message = parser(line, parsed_line); //gets a line and parse it
strcpy(buffer, message);
}
}
}
return;
}
我將不勝感激,如果有人能幫助我。
這是C,所以使用'int main'而不是'void main'。 –
如果你使用memcpy(),它會更好,因爲它需要起點和長度。通過這種方式,您可以非常輕鬆地管理自己的記憶 – sam
爲什麼每個人都建議複製信息?一個5個指針數組有什麼問題?該消息作爲指針返回,大概是分配給malloc的struct/array,爲什麼不直接旋轉指針呢?爲什麼一遍又一遍批量複製數據?這是一個錯誤的C++問題嗎? :) –