line
被fgets'd,並且在while
循環用計數器n
運行,d
是具有2個字符數組,p
和q
一個結構。基本上,用幾句話來說,我想讀一條線,將它分成兩個字符串,一個直到第一個空格,另一個與剩下的一行。之後我清理(\n
從文件變爲\'0')。代碼的工作原理,但有沒有更習慣於這樣做的方式?我在「不知情」中遇到什麼錯誤?讀取一條線,標記化和分配給STRUCT用C
size_t spc = strcspn(line," ");
strncpy(d[n].p, line, spc);
d[n].p[spc+1]='\0';
size_t l = strlen(line)-spc;
strncpy(d[n].q, line+spc+1, l);
char* nl = strchr(d[n].q, '\n');
if(nl){
*nl='\0';
}
n++;
編輯:q
可能會包含空格。
謝謝。
`strcspn`和`strlen`回報`size_t`,不`int`。在這裏使用錯誤的類型在99%時間內是無害的,但這是一個壞習慣,因爲偶爾會導致漏洞。 – 2010-12-21 20:38:21
@R:固定。還有「5」。 – 2010-12-22 01:17:03