帮忙修改下,谢谢!将查看试题函数(view),测试函数(test)改为从指定txt文本中读取试题

将查看试题函数(view),测试函数(test)改为从指定txt文本中读取试题

#include
#include
#include
#include
//定义试题结构体
typedef struct node
{
int id; //试题编号
char problem[512]; //题干
char optionA[256]; //选项A
char optionB[256]; //选项B
char optionC[256]; //选项C
char optionD[256]; //选项D
char ans[4]; //正确答案
char choose[4];//学员答案
struct node*pNext; //指向下一个试题的指针
}Node;

Node *pHead = NULL; //存放试题的链表的首节点地址
Node *pTail = NULL;

//申请储存空间
void insertNode(int id, char *problem, char *optionA, char *optionB, char *optionC, char *optionD, char *ans)
{
Node *pNew = (Node *)malloc(sizeof(Node));
pNew->id = id;
strcpy(pNew->problem, problem);
strcpy(pNew->optionA, optionA);
strcpy(pNew->optionB, optionB);
strcpy(pNew->optionC, optionC);
strcpy(pNew->optionD, optionD);
strcpy(pNew->ans, ans);
pNew->pNext=NULL;

 if (pHead == NULL)
    {
     pHead = pNew;
     pTail = pHead;
    }
 else
    {   
     //尾插入法
     pTail->pNext = pNew;
     pTail = pNew;

     //头插入法
     //pNew->pNext = pHead;
     //pHead = pNew;
    }

}

//录入试题
void insert()
{
int id;
char problem[512];
char optionA[256];
char optionB[256];
char optionC[256];
char optionD[256];
char ans[4];
char choose = 'Y';

 while(toupper(choose)=='Y')
      {
         printf("\n**********录入试题**********");
         printf("\n请输入试题编号:");
         scanf("%d",&id);
         getchar();//读取换行符

         printf("请输入题干:");
         gets(problem);

         printf("请输入选项A: ");
         gets(optionA);

         printf("请输入选项B:");
         gets(optionB);

         printf("请输入选项C:");
         gets(optionC);

         printf("请输入选项D:");
         gets(optionD);

         printf("请输入答案: ");
         gets(ans);

         if ((id > 0) && (strlen(problem) > 0))
            {
             insertNode(id, problem, optionA, optionB, optionC, optionD, ans);
            }
         else
            {
             printf("试题内容错误,请重新输入\n");   
            }

         printf("\n继续录入(Y\\N)?");
         scanf("%c",&choose);
         getchar();
      }

}

//查看试题
void view()
{
Node *tempNode = pHead;

/* FILE *fp = fopen("exam.txt", "w");

 while(tempNode!=NULL)
      {
       fscanf(fp, "题号: %d\n",tempNode->id);
       fscanf(fp, "题干: %s\n",tempNode->problem);
       fscanf(fp, "答案A: %s\n",tempNode->optionA);
       fscanf(fp, "答案B:%s\n",tempNode->optionB);
       fscanf(fp, "答案C:%s\n",tempNode->optionC);
       fscanf(fp, "答案D:%s\n",tempNode->optionD);
       fscanf(fp, "正确答案:%s\n",tempNode->ans);
       fscanf(fp, "********************\n");
       tempNode=tempNode->pNext;
      }

 fclose(fp);
 fp = NULL;*/
 while(tempNode != NULL)
      {
       printf("id:%d\n,problem:%s\n,optionA:%s\n,optionB:%s\n,optionC:%s\n,optionD:%s\n,ans:%s\n",tempNode->id,tempNode->problem,
               tempNode->optionA,tempNode->optionB,tempNode->optionC,tempNode->optionD,tempNode->ans);

       tempNode = tempNode->pNext;
      }

}

//保存试题
void save() //保存试题
{
Node *tempNode=pHead;

 FILE *fp = fopen("exam.txt", "a");

 while(tempNode!=NULL)
      {
       fprintf(fp, "题号: %d\n",tempNode->id);
       fprintf(fp, "题干: %s\n",tempNode->problem);
       fprintf(fp, "答案A: %s\n",tempNode->optionA);
       fprintf(fp, "答案B:%s\n",tempNode->optionB);
       fprintf(fp, "答案C:%s\n",tempNode->optionC);
       fprintf(fp, "答案D:%s\n",tempNode->optionD);
       fprintf(fp, "正确答案:%s\n",tempNode->ans);
       fprintf(fp, "********************\n");
       printf("\n保存成功!");
       printf("\n\n\n");

       tempNode=tempNode->pNext;
      }

 fclose(fp);
 fp = NULL;

}

//修改试题
void mod()
{
void view();

 int id; //题号
 char problem[200]; //题干
 char optionA[100]; //选项A
 char optionB[100]; //选项B
 char optionC[100]; //选项C
 char optionD[100]; //选项D
 char ans[4]; //答案
 char choose;

 Node *tempNode=pHead;

 printf("\n请输入要修改的题号:");
 scanf("%d", &id);
 getchar();

 while(tempNode!=0)  //从第一题开始找,直到找到指定的试题
      {
       if(id==tempNode->id)
         {
          break;
         }

      tempNode=tempNode->pNext;  
      }

 if(tempNode==NULL)
   {
    printf("该试题不存在\n");
    return;
   }

 //显示试题信息
 printf("id:%d\n,problem:%s\n,optionA:%s\n,optionB:%s\n,optionC:%s\n,optionD:%s\n,ans:%s\n",tempNode->id,tempNode->problem,
        tempNode->optionA,tempNode->optionB,tempNode->optionC,tempNode->optionD,tempNode->ans);

 printf("请输入修改后的试题信息");
 printf("\n请输入试题编号:");
 scanf("%d",&id);
 getchar();

 printf("请输入题干:");
 gets(problem);

 printf("请输入选项A: ");
 gets(optionA);

 printf("请输入选项B:");
 gets(optionB);

 printf("请输入选项C:");
 gets(optionC);

 printf("请输入选项D:");
 gets(optionD);

 printf("请输入答案:");
 gets(ans);

 printf("是否修改(Y\\N)?");
 scanf("%c", &choose);
 getchar();

 if(toupper(choose)=='Y')
    {

     strcpy(tempNode->problem, problem);
     strcpy(tempNode->optionA, optionA);
     strcpy(tempNode->optionB, optionB);
     strcpy(tempNode->optionC, optionC);
     strcpy(tempNode->optionD, optionD);
     strcpy(tempNode->ans, ans);
    }
printf("\n修改成功!");
printf("\n\n\n");

//显示所有试题
view();
}

//删除试题
void del()
{
int id;
char choose;
Node *tempNode=pHead; //存放试题链表的首地址,即第一道试题(结构体)的地址
Node *previousNode=pHead; //指定试题的上一道试题的地址

 printf("\n请输入要删除的试题题号:");
 scanf("%d",&id);
 getchar();

 while(tempNode != NULL) //从第一题开始找,直到找到指定的试题
       {
        if(id==tempNode->id)
          {
           break;
          }

        previousNode=tempNode; //当前节点是下一个节点的前节点
        tempNode=tempNode->pNext; //指向下一节点
       }

 if(tempNode==NULL)
   {
    printf("该试题不存在\n");
    return;
   }

//显示试题信息

printf("id:%d\n,problem:%s\n,optionA:%s\n,optionB:%s\n,optionC:%s\n,optionD:%s\n,ans:%s\n",tempNode->id,tempNode->problem,
tempNode->optionA,tempNode->optionB,tempNode->optionC,tempNode->optionD,tempNode->ans);

 printf("要删除该题么(Y\\N)?");
 scanf("%c",&choose);
 getchar();

 if(toupper(choose)=='Y')
    {       
     previousNode->pNext=tempNode->pNext;

     free(tempNode);
    }
  printf("\n删除成功!");
  printf("\n\n\n");

}

//测试
void exam()
{
Node *tempNode = pHead;

 printf("开始进行测试=========\n");

 while (NULL != tempNode)
       {
        printf("\n\n\n");
        printf("题目:id:%d\n,problem:%s\n,optionA:%s\n,optionB:%s\n,optionC:%s\n,optionD:%s\n",tempNode->id,tempNode->problem,
            tempNode->optionA,tempNode->optionB,tempNode->optionC,tempNode->optionD);
        printf("请输入答案(A,B,C,D):");
        gets(tempNode->choose); 

        tempNode = tempNode->pNext;
       }

 printf("考试完毕=========\n");

}

//统计得分
void calcScore()
{
int iSucc = 0;
Node *tempNode = pHead;

 while (tempNode != NULL)
       {
        printf("=====================\n");
        printf("id:%d\n,problem:%s\n,optionA:%s\n,optionB:%s\n,optionC:%s\n,optionD:%s\n,ans:%s\n,choose:%s\n",tempNode->id,tempNode->problem,
              tempNode->optionA,tempNode->optionB,tempNode->optionC,tempNode->optionD,tempNode->ans,tempNode->choose);

        if (0 == strcmp(tempNode->ans, tempNode->choose))
           {
            iSucc++;
            }

        tempNode = tempNode->pNext;
        }

 printf("共答对:%d题\n", iSucc);

}

#include
#include
#include
#include
#include
using namespace std;

int main()
{
ifstream inf;
inf.open("d:\test.txt");

string sline;//每一行
string out;
char problem[512]; //题干
char optionA[256]; //选项A
char optionB[256]; //选项B
char optionC[256]; //选项C
char optionD[256]; //选项D

while(getline(inf,sline))
{
istringstream sin(sline);
sin>>problem>>problemA>>problemB>>problemC>>problemD;
cout<<problem<<" "<<problemA<<" "<<problemB<<" "<<problemC<<" "<<problemD<<"\n";

}

}

你新建一个cpp,贴上去

 也可以这样写:
ifstream fin(test.txt");

 if( ! fin )
 {
  cerr<<"Can not open datain1 file."<<endl;
  getchar();
  return 1;
 };

 while( ! fin.eof() )
 {
  Datalen++;
  if( Datalen > 99 )
  {
   cerr<<"Too much Data!"<<endl;
   getchar();
   return 1;
  };
  fin>>Data[Datalen];
 };

 fin.close(); 

然后修改下
oid insert()
{
int id;
char problem[512];
char optionA[256];
char optionB[256];
char optionC[256];
char optionD[256];
char ans[4];
char choose = 'Y';
while(toupper(choose)=='Y')
{
printf("\n**********录入试题**********");
printf("\n请输入试题编号:");
scanf("%d",&id);
getchar();//读取换行符

     printf("请输入题干:");
     gets(problem);

     printf("请输入选项A: ");
     gets(optionA);

     printf("请输入选项B:");
     gets(optionB);

     printf("请输入选项C:");
     gets(optionC);

     printf("请输入选项D:");
     gets(optionD);

     printf("请输入答案: ");
     gets(ans);

     if ((id > 0) && (strlen(problem) > 0))
        {
         insertNode(id, problem, optionA, optionB, optionC, optionD, ans);
        }
     else
        {
         printf("试题内容错误,请重新输入\n");   
        }

     printf("\n继续录入(Y\\N)?");
     scanf("%c",&choose);
     getchar();
  }

}
//查看试题
void view()
{
Node tempNode = pHead;
/
FILE *fp = fopen("exam.txt", "w");

while(tempNode!=NULL)
{
fscanf(fp, "题号: %d\n",tempNode->id);
fscanf(fp, "题干: %s\n",tempNode->problem);
fscanf(fp, "答案A: %s\n",tempNode->optionA);
fscanf(fp, "答案B:%s\n",tempNode->optionB);
fscanf(fp, "答案C:%s\n",tempNode->optionC);
fscanf(fp, "答案D:%s\n",tempNode->optionD);
fscanf(fp, "正确答案:%s\n",tempNode->ans);
fscanf(fp, "********************\n");
tempNode=tempNode->pNext;
}

fclose(fp);
fp = NULL;*/
while(tempNode != NULL)
{
printf("id:%d\n,problem:%s\n,optionA:%s\n,optionB:%s\n,optionC:%s\n,optionD:%s\n,ans:%s\n",tempNode->id,tempNode->problem,
tempNode->optionA,tempNode->optionB,tempNode->optionC,tempNode->optionD,tempNode->ans);

   tempNode = tempNode->pNext;
  }

}

 typedef struct node
{
int id; //试题编号
char problem[512]; //题干
char optionA[256]; //选项A
char optionB[256]; //选项B
char optionC[256]; //选项C
char optionD[256]; //选项D
char ans[4]; //正确答案
char choose[4];//学员答案
struct node*pNext; //指向下一个试题的指针
}Node;
 #include <stdio.h>
#include <iostream>
#include<string>
#include<fstream>
#include<sstream>
using namespace std;


int main()
{
ifstream inf;
inf.open("d:\\test.txt");


string sline;//每一行
string out;
char problem[512]; //题干
char optionA[256]; //选项A
char optionB[256]; //选项B
char optionC[256]; //选项C
char optionD[256]; //选项D


while(getline(inf,sline))
{
istringstream sin(sline);
sin>>problem>>problemA>>problemB>>problemC>>problemD;
cout<<problem<<" "<<problemA<<" "<<problemB<<" "<<problemC<<" "<<problemD<<"\n";

}


}