为什么第一个字母后面有空格?

时间:2015-11-07 22:11:27

标签: c file printf space

我有这段代码:

void text(){    
    FILE *fp;
    fp = fopen( "Text.txt", "w" );
    if (fp == NULL)printf("not open\n");
    char txt[100];
    char c;
while(1){   
    char c = getche();
    if (c == '\e')
        break;
    txt[0] = c;
    gets(txt+1);
    fprintf(fp, "%s ",txt);
}
    fclose(fp);
}

它工作正常,输出如下:Hello there.

void text(){    
    char fname[20] ; 
    puts("Write file name");
    scanf("%s",&fname); //input of the file name
    char ext[5] = ".txt";
    char fileSpec[strlen(fname)+strlen(ext)+1]; //file name assambly
    snprintf( fileSpec, sizeof( fileSpec ), "%s%s", fname, ext);
    FILE *fp;
    fp = fopen( fileSpec, "w" );
    if (fp == NULL)printf("not open\n");
    char txt[100];
    char c;
while(1){   
    char c = getche();
    if (c == '\e')
        break;
    txt[0] = c;
    gets(txt+1);
    fprintf(fp, "%s ",txt);
}
    fclose(fp);
}

我从一个网站上半部分,单独测试它,它的工作原理。下半部分是相同的,当我把两者放在一起时,输出将是这样的:H ello there.

为什么那个空间在那里?

1 个答案:

答案 0 :(得分:0)

你没有提供足够的上下文(即什么被放入stdin?文件中有什么?)。

但是你的fprintf(fp, "%s ",txt);中有一个空格,这似乎是可能的罪魁祸首。 (请注意,while循环可以运行多次,因此在它输出到文件之间添加空格)。