我有这段代码:
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.
为什么那个空间在那里?
答案 0 :(得分:0)
你没有提供足够的上下文(即什么被放入stdin?文件中有什么?)。
但是你的fprintf(fp, "%s ",txt);
中有一个空格,这似乎是可能的罪魁祸首。 (请注意,while循环可以运行多次,因此在它输出到文件之间添加空格)。