fscanf(fp, "%s", sLineWord);
以上語句,在讀取一行數據時,如何遇到該行數據有空格,那么讀到空格處就停止,不再繼續向下讀。
若想遇到空格繼續讀取,讀取完整的一行數據,則用如下語句:
fscanf(fp, "%[^\n]%*c", sLineWord);
fscanf用於讀取字符串數據流,遇到空白字符(空格' '; 制表符'\t'; 新行符'\n')就停止,若要讀取完整的一行數據,可以使用格式控制("%[^\n]%*c"),或者使用行讀取函數(getline)。
格式控制說明:%[ ]表示讀取指定字符集的文本,例如%[0-9]表示僅讀取數字,遇到非數字字符就停止;%[a-zA-Z]表示讀取字符,遇到非字母字符就停止)。第一個字符是'^',表示反向讀取,讀取指定字符集以外的文本,遇到指定字符集就停止。*表示忽略讀取的字符,就是說讀取指定的字符但不保存到變量中。
%[^\n]表示讀取'\n'之外的所有字符;之后的%*c表示忽略讀取的'\n',就是說讀取'\n'但不保存。
%*[^\n]%*c表示跳過一行。