Member Avatar for kohkohkoh

I've just wrote this program and when i compile, there is an error at the red color fonts.
Can i know what's the error?
thank you.

char quest;
char words[50];
int count;
int z;
ofstream file;
file.open("WORDS.txt" , ios::app);
file.close();

cin.ignore(50,'\n');
cout << "\n\n Please enter the word that need to be deleted: ";
cin.getline(words,50,'\n');

for (int i=0; i<strlen(words); i++)
{
words= tolower(words);
z = count + 5;

}

for (i=0; i < count; i++)
{
if ( strcmp( words,words) == 0 )
z = i;
}


if (z<count)
{
ofstream file;
file.open("WORDS.txt", ios::app);

for ( i=0; i < count; i++)
{
if ( i!=z )
cout << words << endl;
}


system("del words.txt");
system("ren words.txt words.txt");
}

ah it's simple, just do for(int i=0; i<.......

A for loop has it's own scope so you have to declare the i again.

Variable z and count are never initialized. You should start with int z=0 and int count=0. When you get into the loop, count is an unknown value

Did you include string.h?

No wait. You are trying to compare individual letters with strings when you use
words. strcmp() can only accept string arguments.

Member Avatar for kohkohkoh

yes..

this one was just a part of my program.
just can't figure out the problem...
error message says:
error c2664: 'strcmp' : cannot convert parameter 1 from 'char' to 'const char*'

..but then, i didn't use pointers

The second parameter to strcmp up there is actually a pointer--that's half of what an array is, just a location in memory (the other half is the field size, in this case char, to use when making offsets into the array).

...
if ( strcmp( words,words) == 0 )
...
error message says:
error c2664: 'strcmp' : cannot convert parameter 1 from 'char' to 'const char*'

..but then, i didn't use pointers

A few additional comments:

The value of count doesn't change, so it doesn't have to be in the loop--if that line assigning to z is really what you want to do.

...
for (int i=0; i<strlen(words); i++)
{
words= tolower(words);
z = count + 5;

}
...

Similar idea here. The loop will always end with i equal to count - 1, so making that last assignment to z doesn't have to be inside the loop--again, if that's what you want it to do.

...
for (i=0; i < count; i++)
{
if ( strcmp( words,words) == 0 )
z = i;
}
...

Continuing the same line of thought, z<count will always be true, so the if statement isn't necessary.

...
if (z<count)
{
ofstream file;
file.open("WORDS.txt", ios::app);
...

This last bit is a little strange--renaming a file that no longer exists?

...
system("del words.txt");
system("ren words.txt words.txt");
}
...

--sg

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.