当前位置: 代码迷 >> C语言 >> [求助] 程序结果和预想的不一样
  详细解决方案

[求助] 程序结果和预想的不一样

热度:192   发布时间:2007-04-23 18:46:35.0
[求助] 程序结果和预想的不一样

/*我是个beginner,我想做一个有建立文件和删除文件功能的程序,但是出现了错误,程序结果和预想的不一样,请帮忙看看啊,谢*/
/*能不能帮我调一下啊*/

#include<stdio.h>
#include<io.h>

struct students{ /*定义一个学生情况的结构体*/
char name[6]; /*学生姓名*/
char sex[2]; /*学生性别*/
char phone[11]; /*学生电话*/
}stu[100]; /*学生结构体变量*/

int del(fname_del); /*声明删除文件函数*/

void main()
{
FILE *fp_new; /*定义新建文件指针*/
FILE *fp_del; /*定义被删除文件指针*/
char fname_new[20]; /*定义新建文件名变量*/
char fname_del[20]; /*定义被删除文件名变量*/
int i; /*过程控制量*/
int j; /*过程控制量*/
puts("请选择你想执行的操作:\n1 删除文件\n2 其它");
scanf("%d",&i);
if(i==1)
{
puts("请输入你想删除的文件名:");
gets(fname_del);
del(fname_del);
}

printf("i=%d",i); /*检测i的值*/
getchar(); /*暂停便于检测函数执行情况*/
printf("请输入新文件名:\n"); /*提示用户输入新文件名*/
gets(fname_new); /*接收用户输入的新文件名*/
if((fp_new=fopen(fname_new,"a+"))==NULL) /* 如果打开文件指针返回NULL,今天我在这里出错了,我在这里提醒我自己!注意:fopen(fname_new,"w+") 中的文件名用的是变量,因此不用双引号扩起来!*/
{
printf("建立文件出错!\n"); /* 提示操作结果*/
exit(0); /*退出*/
}
printf("请输入学生姓名:\n"); /*提示用户输入信息*/
scanf("%s",&stu[0].name); /*接收用户输入信息*/
printf("%s\n",stu[0].name); /*输出用户信息*/
fputs(stu[0].name,fp_new); /*存入用户信息*/
fputc("\n",fp_new); /*写入回车符*/
fclose(fp_new); /*关闭文件*/
}

int del(char *wjp) /*定义删除文件函数*/
{
int status; /*这以后的我不懂了,请高手指教啊*/
{
unlink(wjp);
status = access(wjp,0);
if (status == 0)
printf("F文件已删除!\n");
else
printf("文件未找到!\n");
return 0;
}
}


/* 函数备忘录:
fputc();
fputs();
fprintf();
fwrite();


函数名: unlink
功 能: 删掉一个文件
用 法: int unlink(char *filename);
程序例:

#include <stdio.h>
#include <io.h>

int main(void)
{
FILE *fp = fopen("junk.jnk","w");
int status;

fprintf(fp,"junk");

status = access("junk.jnk",0);
if (status == 0)
printf("File exists\n");
else
printf("File doesn't exist\n");

fclose(fp);
unlink("junk.jnk");
status = access("junk.jnk",0);
if (status == 0)
printf("File exists\n");
else
printf("File doesn't exist\n");


return 0;
}

*/

搜索更多相关的解决方案: 预想  结果  

----------------解决方案--------------------------------------------------------

哪里不一样?编译通过吗?
那么长的,不想仔细看,你说具体点


----------------解决方案--------------------------------------------------------
编著译能通过,就是不能删除文件.
还有,代码并不长,只有2个函数,有一半是我自己的备忘录,它不是程序.
----------------解决方案--------------------------------------------------------
以下是引用laigaoat2005在2007-4-23 19:19:13的发言:
编著译能通过,就是不能删除文件.
还有,代码并不长,只有2个函数,有一半是我自己的备忘录,它不是程序.

你确信编得过?
我怎么编不过?

[此贴子已经被作者于2007-4-23 19:44:33编辑过]


----------------解决方案--------------------------------------------------------
我在C-Free3.5中调试通过的.只是结果不对.
----------------解决方案--------------------------------------------------------
如果你用的是TC2.0,就要把注解号  //   换成/*      */
----------------解决方案--------------------------------------------------------

修改如下:

#include<stdio.h>
#include<io.h>

struct students{ /*定义一个学生情况的结构体*/
char name[6]; /*学生姓名*/
char sex[2]; /*学生性别*/
char phone[11]; /*学生电话*/
}stu[100]; /*学生结构体变量*/

int del(char *wjp); /*声明删除文件函数*/ //这样声明才对

void main()
{
FILE *fp_new; /*定义新建文件指针*/
FILE *fp_del; /*定义被删除文件指针*/
char fname_new[20]; /*定义新建文件名变量*/
char fname_del[20]; /*定义被删除文件名变量*/
int i; /*过程控制量*/
int j; /*过程控制量*/
puts("请选择你想执行的操作:\n1 删除文件\n2 其它");
scanf("%d",&i);
if(i==1)
{
getchar(); // 这里最重要,不然下面的gets把你输入的回车给截住了
puts("Please del:");
gets(fname_del); //如果不加的话,你这里得到是回车,所以才会无效
printf("name:%s",fname_del);
del(fname_del);
}

printf("i=%d",i); /*检测i的值*/
getchar(); /*暂停便于检测函数执行情况*/
printf("请输入新文件名:\n"); /*提示用户输入新文件名*/
gets(fname_new); /*接收用户输入的新文件名*/
if((fp_new=fopen(fname_new,"a+"))==NULL) /* 如果打开文件指针返回NULL,今天我在这里出错了,我在这里提醒我自己!注意:fopen(fname_new,"w+") 中的文件名用的是变量,因此不用双引号扩起来!*/
{
printf("建立文件出错!\n"); /* 提示操作结果*/
exit(0); /*退出*/
}
printf("请输入学生姓名:\n"); /*提示用户输入信息*/
scanf("%s",&stu[0].name); /*接收用户输入信息*/
printf("%s\n",stu[0].name); /*输出用户信息*/
fputs(stu[0].name,fp_new); /*存入用户信息*/
fputc('\n',fp_new); /*写入回车符*/
fclose(fp_new); /*关闭文件*/
}

int del(char *wjp) /*定义删除文件函数*/
{
int status; /*这以后的我不懂了,请高手指教啊*/
{
unlink(wjp);
status = access(wjp,0);
if (status == 0)
printf("F文件已删除!\n");
else
printf("文件未找到!\n");
return 0;
}
}

[此贴子已经被作者于2007-4-23 19:55:13编辑过]


----------------解决方案--------------------------------------------------------
你编译了了吗?我去试试。
----------------解决方案--------------------------------------------------------
你编译了了吗?我去试试。谢谢了哈。
----------------解决方案--------------------------------------------------------
哦,对了,谢谢你哦。
----------------解决方案--------------------------------------------------------
  相关解决方案