主题:哪位高手能解此惑,感激不尽!(关于fgets()取到的字符串用于库函数时出错的问题))
/*
**2010-12-30
**测试fgets
*/
#include<stdio.h>
#include<stdlib.h>
#define MAX 255 /*文件名最大长度*/
#define LEN 1000 /*文件写入时用的buffer最大长度*/
#define _FGETS 0
int main(void)
{
FILE *pFile;
char FileName[MAX];
char str[LEN];
char choice;
printf("please input the file name:\n");
#if _FGETS
fgets(FileName,MAX-1,stdin ); /*居然出现能取到FileName数组但用fopen却打不开*/
fflush( stdin );
printf("%s",FileName);
#else
gets( FileName );
#endif
/*
** 打开并创建文件
*/
pFile=fopen( FileName , "wb+" );
if( pFile ==NULL ){
perror( FileName );
exit(EXIT_FAILURE);
}
fgets( str , LEN-1 ,stdin );
while( !feof( stdin ) ){
fputs( str , pFile );
fgets( str ,LEN-1 ,stdin );
}
fclose( pFile );
/*进行文件的删除与重命名操作*/
puts("delete the file enter:Y,rename:R");
choice = fgetc( stdin );
if(choice =='Y')
{
puts(" please input the new name ");
fflush( stdin );
// fgets( str ,MAX-1 , stdin );
// puts(str);
gets( str ); /*用fgets则操作remove失败,但str数组中却是取到了值的*/
remove( str );
}
else if( choice =='R')
{
puts(" please input the new name ");
fflush( stdin );
// fgets( str, MAX-1, stdin ); /*为什么用fgets取得的字符串不能用于rename*/
// puts(str);
gets( str );
rename( FileName, str );
}
else
{
puts("NO this option,then exit");
}
system("pause");
return 0;
}
[code=c]
请填写代码
[/code]
**2010-12-30
**测试fgets
*/
#include<stdio.h>
#include<stdlib.h>
#define MAX 255 /*文件名最大长度*/
#define LEN 1000 /*文件写入时用的buffer最大长度*/
#define _FGETS 0
int main(void)
{
FILE *pFile;
char FileName[MAX];
char str[LEN];
char choice;
printf("please input the file name:\n");
#if _FGETS
fgets(FileName,MAX-1,stdin ); /*居然出现能取到FileName数组但用fopen却打不开*/
fflush( stdin );
printf("%s",FileName);
#else
gets( FileName );
#endif
/*
** 打开并创建文件
*/
pFile=fopen( FileName , "wb+" );
if( pFile ==NULL ){
perror( FileName );
exit(EXIT_FAILURE);
}
fgets( str , LEN-1 ,stdin );
while( !feof( stdin ) ){
fputs( str , pFile );
fgets( str ,LEN-1 ,stdin );
}
fclose( pFile );
/*进行文件的删除与重命名操作*/
puts("delete the file enter:Y,rename:R");
choice = fgetc( stdin );
if(choice =='Y')
{
puts(" please input the new name ");
fflush( stdin );
// fgets( str ,MAX-1 , stdin );
// puts(str);
gets( str ); /*用fgets则操作remove失败,但str数组中却是取到了值的*/
remove( str );
}
else if( choice =='R')
{
puts(" please input the new name ");
fflush( stdin );
// fgets( str, MAX-1, stdin ); /*为什么用fgets取得的字符串不能用于rename*/
// puts(str);
gets( str );
rename( FileName, str );
}
else
{
puts("NO this option,then exit");
}
system("pause");
return 0;
}
[code=c]
请填写代码
[/code]