Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 读取INT文件应该可以正常工作,但不能正常工作_C++_Linux_Putty - Fatal编程技术网

C++ 读取INT文件应该可以正常工作,但不能正常工作

C++ 读取INT文件应该可以正常工作,但不能正常工作,c++,linux,putty,C++,Linux,Putty,在过去的几天里,我和一个朋友一直在做一个程序,并想出了如何将一个整数文件读入一个程序,在我们制作它的第一天它就工作了,但我一定改变了什么,因为现在它从第二个整数开始读取,并在最后加上一个零。 代码如下: #include <iostream> #include <string> #include <iomanip> #include <fstream> #include <cmath> #include <cstdlib>

在过去的几天里,我和一个朋友一直在做一个程序,并想出了如何将一个整数文件读入一个程序,在我们制作它的第一天它就工作了,但我一定改变了什么,因为现在它从第二个整数开始读取,并在最后加上一个零。 代码如下:

#include <iostream>

#include <string>
#include <iomanip>
#include <fstream>
#include <cmath>
#include <cstdlib>
using namespace std;

struct Hand
{
  int handCards[52];
  int totalCards;
};

struct Card
{
  char rank;
  char suit;
};

void OpenFile (ifstream&, string&);
void ReadFile (ifstream&, Hand&);
void ProcessRank (Hand&, int CardRank[]);
void ProcessSuit (Hand&, int CardSuit[]);
char GetRank (int);
char GetSuit (int);
void PrintCard (Card);
Card ConvertRaw (Hand);
void PrintHand (Card, Hand);
int main()
{
  ifstream inf;
  string filename;
  Hand theHand;
  Card aCard;
  int CardRank[13];
  int CardSuit[4];

  OpenFile(inf, filename);
  ReadFile(inf, theHand);


}

void OpenFile (ifstream &inf, string &filename)
{
  cout<<"What is the name of the file?" <<endl;
  cin>>filename;

  inf.open(filename.c_str());

  if (inf.fail())
    {
      cout<<"Sorry, that file doesn't exist" <<endl;
      exit(1);
    }
  else
    cout<<"Success!" <<endl <<endl;
}

void ReadFile (ifstream &inf, Hand &theHand)
{
  theHand.totalCards=0;
  int i=0;
  inf>>theHand.handCards[i];
  while(inf.good())
    {
      i++;
      inf>>theHand.handCards[i];
      theHand.totalCards++;
      cout<<theHand.handCards[i];
    }
}



  void ProcessRank (Hand &theHand, int rank[])
{
  int placement;
  for (int i=0; i<13; i++)
    {
      rank[i]=0;
    }
  for (int i=0; i=theHand.totalCards; i++)
    {
      placement=(theHand.handCards[i]%13);
      switch (placement)
        {
        case 0:rank[0]++; break;
        case 1:rank[1]++; break;
        case 2:rank[2]++; break;
        case 3:rank[3]++; break;
        case 4:rank[4]++; break;
        case 5:rank[5]++; break;
        case 6:rank[6]++; break;
        case 7:rank[7]++; break;
        case 8:rank[8]++; break;
        case 9:rank[9]++; break;
        case 10:rank[10]++; break;
        case 11:rank[11]++; break;
        case 12:rank[12]++; break;
        }
    }


void ProcessSuit (Hand &theHand, int suit[])
{
  int placement;
  for (int i=0; i<5; i++)
    {
      suit[i]=0;
    }
  for (int i=0; i=theHand.totalCards; i++)
    {
      placement=(theHand.handCards[i]/13);
      switch (placement)
        {
        case 0:suit[0]++; break;
        case 1:suit[1]++; break;
        case 2:suit[2]++; break;
        case 3:suit[3]++; break;
        }
    }
}


char GetRank(int CardRank)
{
  int rankV=(CardRank%13);
  switch(rankV)
    {
    case  0: return 'A';
    case  9: return 'T';
    case 10: return 'J';
    case 11: return 'Q';
    case 12: return 'K';
    default: return (char(rankV + '0' + 1));
    }
}

char GetSuit (int CardSuit)
{
  int suitV=(CardSuit/13);
    switch(suitV)
      {
      case  0: return 'D';
      case  9: return 'H';
      case 10: return 'S';


   }
}


void PrintCard (Card aCard)
{
  cout<<aCard.rank<<aCard.suit<<endl;
}

Card ConvertRaw(int rawValue)
{
  Card finalCard;
  finalCard.rank=GetRank(rawValue);
  finalCard.suit=GetSuit(rawValue);
  return finalCard;
}

void PrintHand (Card aCard, Hand theHand)
{
  for (int i=0; i <theHand.totalCards; i++)
    {
    PrintCard(ConvertRaw(theHand.handCards[i]));
    }
}
#包括
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
结构手
{
国际名片[52];
积分卡;
};
结构卡
{
字符秩;
炭服;
};
void OpenFile(ifstream&,string&);
无效读取文件(ifstream&,Hand&);
void ProcessRank(Hand和int CardRank[]);
无效工艺套装(手工和内部卡式套装[]);
字符GetRank(int);
chargetsuit(int);
作废打印卡(卡片);
卡片(手);
作废打印手(卡片、手);
int main()
{
ifstream-inf;
字符串文件名;
手拉手;
卡学院;
int CardRank[13];
int CardSuit[4];
OpenFile(inf,文件名);
读取文件(inf,theHand);
}
void OpenFile(ifstream和inf、字符串和文件名)
{

cout在
ReadFile
中,您在while循环之外读取第一张卡,但在您有机会打印第一张卡之前,您读取了第二张卡

不确定您的最后一张卡为什么为0,可能与您的
牌有关,您没有显示该牌


另外,你有没有考虑过使用一个?

去掉第一个inf>>使它按时间顺序读对了,但是零仍然存在,没有,我在cs专业学习的时间不够长/做的研究不够,不知道他们已经学会了使用
g++-Wall-g
编译和使用
gdb
调试器