0

This belongs in both C and C++ forums, but it's more of C++ (I think) so I'll keep it in here for now.

I'm working on a C++ program to extract files that I am constantly compressing and testing (releasing software for beta testers to take a look at). I use the 7-Zip program to aid in this process.

Here is my code so far, and I bet you can just look at it and guess what's going wrong.

#include <iostream>
#include <string.h>
using namespace std;

int main()
{
	char file[256];
	char opening[14] = "7z.x64.exe x ";
	char final[256], tar[6] = "*.tar";
	cout<<"Please enter the archive name to extract the files from (please include the extension): ";
	cin.getline(file, 256);
	strcpy(final, opening);
	strcat(final, file);
	cout<<"\n"<<final<<"\n\n";
	system(final);
	cout<<"\n\n";
	system("pause");
	if (file == "*.tar")
	{
		strcpy(final, opening);
		strcat(final, tar);
		system(final);
		cout<<"\n\n";
		system("pause");
	}
}

Well now, I can't get this "if" statement to work, any suggestions? Thanks.

P.S. The parts before the if statement do work.

3
Contributors
3
Replies
4
Views
8 Years
Discussion Span
Last Post by apease11
0

line 18: should be this: if ( strcmp(file,"*.tar") == 0) The way you had it was comparing two address, not their contents. But Vernon is right about using strstr() to see if ".tar" was entered in the file name.

0

Thank you VernonDozier, that strstr works perfectly! Here's my code now:

#include <iostream>
#include <string.h>
#include <cstdlib>
#include <fstream>
#include <sstream>
#include <cstring>
#include <ctime>
using namespace std;

int main()
{
	ofstream outputFile;
	string filePrefix = "output";
    string fileSuffix;
    string fileName;
    stringstream convert;
	char dateStr [9];
    char timeStr [9];

	char file[256];
	char opening[14] = "7z.x64.exe x ";
	char final[256], tar[6] = "*.tar";
	cout<<"Please enter the archive name to extract the files from (please include the extension): ";
	cin.getline(file, 256);
	strcpy(final, opening);
	strcat(final, file);
	cout<<"\n"<<final<<"\n\n";
	system(final);
	cout<<"\n\n";
	system("pause");

/*
*	char time[10];
*	_strtime(time);
*	fileSuffix = time;
*	fileName = filePrefix + fileSuffix;
*		//Open file using *.c_str()
*	outputFile.open(fileName.c_str());
*	outputFile << final << "\n\n";
*/

	if (strstr(file, ".tar"))
	{
		strcpy(final, opening);
		strcat(final, tar);
		system(final);
		cout<<"\n\n";
		system("pause");
		//outputFile << final << "\n\n";
		//outputFile.close();
	}
/*
*	else {
*		outputFile.close();
*	}
*/
}

Now just to implement a debug file of what the program did...

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.