这是我的功能代码:
char str[DIM_STR];
char tipo[DIM_TIPO];
int j=0, var=0;
for(j=0; j<DIM_STR; j++)
str[j]='\0';
for(j=0; j<DIM_TIPO; j++)
tipo[j]='\0';
while(fgets(str, DIM_STR, fp)!=NULL){
if(str[0]=='\n')
{
printf("line %d,LINHA EM BRANCO\n", var);
}
else
{
sscanf(str, "%s", tipo);
if(strcmp(tipo, "JANELA")==0){
sscanf(str, "%s %d %d", tipo, &info_janela[DIM_JANELA][DIM_X], &info_janela[DIM_JANELA][DIM_Y]);
}
if(strcmp(tipo, "X")==0){
sscanf(str, "%s %d %d", tipo, &info_janela[DIM_FIS_X][X_FIS_MAX], &info_janela[DIM_FIS_X][X_FIS_MIN]);
}
if(strcmp(tipo, "Y")==0){
sscanf(str, "%s %d %d", tipo, &info_janela[DIM_FIS_Y][Y_FIS_MAX], &info_janela[DIM_FIS_Y][Y_FIS_MIN]);
}
if(strcmp(tipo, "C")==0){
sscanf(str, "%s %d %d", tipo, &info_janela[CENTRO_REF][X_0], &info_janela[CENTRO_REF][Y_0]);
}
if(strcmp(tipo, "ESTRELAS")==0){
sscanf(str, "%s %d", info_tamanho[ESTRELAS].tipo, &info_tamanho[ESTRELAS].tamanho);
}
if(strcmp(tipo, "PLANETAS")==0){
sscanf(str, "%s %d", info_tamanho[PLANETAS].tipo, &info_tamanho[PLANETAS].tamanho);
}
if(strcmp(tipo, "ASTEROIDES")==0){
sscanf(str, "%s %d", info_tamanho[ASTEROIDES].tipo, &info_tamanho[ASTEROIDES].tamanho);
}
if(strcmp(tipo, "FRAGMENTOS")==0){
sscanf(str, "%s %d", info_tamanho[FRAGMENTOS].tipo, &info_tamanho[FRAGMENTOS].tamanho);
}
}
var++;
}
定义列表:
#define DIM_TIPO 10
#define DIM_INFO_CORPOS 4
#define DIM_STR 100
#define DIM_JANELA 0
#define DIM_X 0
#define DIM_Y 1
#define DIM_FIS_X 1
#define X_FIS_MIN 0
#define X_FIS_MAX 1
#define DIM_FIS_Y 2
#define Y_FIS_MIN 0
#define Y_FIS_MAX 1
#define CENTRO_REF 3
#define X_0 0
#define Y_0 1
#define ESTRELAS 0
#define PLANETAS 1
#define ASTEROIDES 2
#define FRAGMENTOS 3
这是文件:
JANELA 600 400
X 1000 -1000
Y 900 -900
C 300 200
ESTRELAS 20
PLANETAS 10
ASTEROIDES 6
FRAGMENTOS 3
它以文本开头 - JANELA ...,为什么它首先读取3个空白行?
这是输出:
line 1,BLANK LINE
line 4,BLANK LINE
line 6,BLANK LINE
600
400
-1000
1000
-900
900
300
200
编辑:这是文件:https://www.dropbox.com/s/ky1ctic8f35y81j/sim_config.txt?dl=0
答案 0 :(得分:1)
只需将您的文件内容(来自dropbox中的文件)粘贴到新的gedit窗口中,看到JANELA这个词之前有3个换行符。下载时,文件没有显示任何空白行,并且片段的输出也不是空行,因此从dropbox下载文件并使用它。 我的代码:
FILE *fp=fopen("sim_config.txt","a+");
char * str=malloc(sizeof(char)*100);
while(fgets(str, sizeof(str), fp)!=NULL){
if(strcmp(str,"\n")==0 || (strcmp(str,"\r\n")==0))
{
printf("BLANK LINE\n\n");
}
else
{
printf("ok\n");
}
}
}
输出: 好 好 BLANK LINE
BLANK LINE
确定 好 好 好 BLANK LINE
确定 好 BLANK LINE
确定 好 好 好 好 好 好 好 ///没有空行