爱问知识人 爱问教育 医院库

这个del()能找到i,但是第二个for循环不起作用。。。请大家帮忙看看

首页

这个del()能找到i,但是第二个for循环不起作用。。。请大家帮忙看看

void del()
{
  int a,i,j,k,count;
  char num[12];
  FILE *fp3;
  if((fp3=fopen("a.text","rb+"))==NULL)
  {
    printf("file cannot open\n");
    exit(0);
  }  
  do
  {
    system("cls");
    printf("请您输入要删除学生的学号:\n");
    scanf("%s",num);
    for(i=0;i<(N+1);i++)
    {
      count=0;
      if(!strcmp(student[i].num,num))
      {
        printf("这是您要删除的学生信息:\n");
        printf("%d.学号:%-s,姓名:%-s,年龄:%-s,性别:%-s,出生年份:%-s,出生月份:%-s,出生日:%-s,家庭住址:%-s,电话:%-s,电子邮箱:%-s\n",(i+1),
        student[i].num,student[i].name,student[i].age,student[i].sex,student[i]. ar,student[i]. nth,
        student[i].brithday.day,student[i].addr,student[i].pho,student[i].mail);
        printf("确认删除请按1,不删除请按0\n");
        scanf("%d",&a);
        if(a>0)
        {
          for(j=i;j<(N+1);j++)
          {
            student[j]=student[j+1];
          }
          printf("删除成功!\n");
          N--;
          break;
        }
      }
      else 
      {
        count++;
      }
    }
    if(count>0)
    printf("没有该学号的学生信息!\n");
    printf("按1继续删除,按0退出删除:\n");
    fflush(stdin);
    scanf("%d",&k);
    }while(k>0);
  fclose(fp3);
}

提交回答
好评回答
  • 2010-08-25 15:35:02
       例如一个用户数据库中查询他的用户名和他的密码,但恰好该用户使用的名字和密码中有特殊的字符,例如单引号,“|”号,双引号或者连字符“&”。 
      例如他的名字是1"test,密码是A|&900 
      这时当执行以下的查询语句时,肯定会报错: 
    SQL = "SELECT * FROM SecurityLevel WHERE UID="" & UserID & """ 
    SQL = SQL & " AND PWD="" & Password & """ 
      因为SQL将会是这样: 
    SELECT * FROM SecurityLevel WHERE UID="1"test" AND PWD="A|&900" 
      在SQL中,"|"为分割字段用的,显然会出错了。
      现在提供下面的几个函数 专门用来处理这些头疼的东西: Function ReplaceStr (TextIn, ByVal SearchStr As String, _ ByVal Replacement As String, _ ByVal CompMode As Integer)  Dim WorkText As String, Pointer As Integer  If IsNull(TextIn) Then   ReplaceStr = Null  Else   WorkText = TextIn   Pointer = InStr(1, WorkText, SearchStr, CompMode)   Do While Pointer > 0    WorkText = Left(WorkText, Pointer - 1) & Replacement & _    Mid(WorkText, Pointer + Len(SearchStr))    Pointer = InStr(Pointer + Len(Replacement), WorkText, SearchStr, CompMode)   Loop   ReplaceStr = WorkText  End If End Function Function SQLFixup(TextIn)  SQLFixup = ReplaceStr(TextIn, """, """", 0) End Function Function JetSQLFixup(TextIn)  Dim Temp  Temp = ReplaceStr(TextIn, """, """", 0)  JetSQLFixup = ReplaceStr(Temp, "|", "" & chr(124) & "", 0) End Function Function FindFirstFixup(TextIn)  Dim Temp  Temp = ReplaceStr(TextIn, """, "" & chr(39) & "", 0)  FindFirstFixup = ReplaceStr(Temp, "|", "" & chr(124) & "", 0) End Function   有了上面几个函数后,当在执行一个sql前,请先使用 SQL = "SELECT * FROM SecurityLevel WHERE UID="" & SQLFixup(UserID) & """ SQL = SQL & " AND PWD="" & SQLFixup(Password) & """ 。
      

    愉***

    2010-08-25 15:35:02

其他答案

  • 上网帮助 相关知识

  • 电脑网络技术
  • 电脑网络

相关推荐

正在加载...
最新问答 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):