Hi. I picked up Dev C++ the other day after a while of not using it. Here's my question: I can't figure out what's wrong with my code Basically, the program prompts for a command. If the command starts with 'open:', then it puts the following character(s) within "<>"s. This is a C++-oriented HTML writing program. It's not too usefull as of now, but I'm planning on making it able to debug. If you think you can help, but you need more info, please email me at pbossier (at) cox (dot) net. Attached is my source file.
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <string>
#include <stdio.h>
using namespace std;
int arrayEqu(char array1[65535], char array2[65535], int length)
{
int i,ret = 1;
for (i = 0; i < length; i++) {
if (array1[i] != array2[i]) {
ret = 0;
}
}
return ret;
}
void copyArr(char array1[65535], char array2[65535])
{
int i;
for (i = 0; i < 65535; i++) {
array2[i] = array1[i];
}
}
char* subArr(char array[65535], int length)
{
int i, j = 0;
**** char temp[65535 - length + 1]; ****
for (i = length - 1; i < 65535 - length - 1; i++) {
temp[j] = array[i];
j++;
}
return temp;
}
int main(int argc, char *argv[])
{
int i, com = 0;
char fileName[30], input[65535], secInput[65535];
printf("Welcome to parker's HTML creator. Type a name for your HTML document...\nFile name: ");
scanf("%s",fileName);
printf("\nNow type a command (type 'help' for help)");
strcat(fileName, ".html");
ofstream toHtml (fileName);
loop:;
printf("\nCommand: ");
scanf("%s",input);
com = 0;
if (arrayEqu(input, "quit", 5)) {
return 0;
}
if (arrayEqu(input, "help", 5)) {
printf("\nThe possible directive commands are: 'open:', 'close:', and 'comp:'.");
printf("\n\nType an operand directly after the ':' to write it to the HTML file.");
printf("\n\nTo type in a paragraph or similar text block, just type the text.");
printf("\n\nNote: no word can be more than 65535 characters long, and cannot begin with a");
printf("\ndirective command.");
printf("\n\nNote: you can enter multiple lines of code in 1 statement by seperating");
printf("\ncommands with spaces (several 'Command:' lines will appear).");
printf("ignore them.");
printf("\n\nType 'quit' to quit. Closing the DOS window will not save your file.\n");
goto loop;
}
if (arrayEqu(input, "open:", 5)) {
toHtml << "<" << subArr(input, 6) << ">\n";
com = 1;
}
if (arrayEqu(input, "close:", 6)) {
toHtml << "</" << subArr(input, 7) << ">\n";
com = 1;
}
if (arrayEqu(input, "comp:", 5)) {
copyArr(subArr(input, 6), secInput);
if(arrayEqu(secInput, "clear")) {
for (i = 0; i < 28; i++) {
printf("\n");
}
}
if(arrayEqu(secInput, "run")) {
system(fileName);
}
com = 1;
}
if (!com) {
toHtml << input << " ";
}
goto loop;
}
When I comment out the
if (arrayEqu(input, "comp:", 5)) {
copyArr(subArr(input, 6), secInput);
if(arrayEqu(secInput, "clear")) {
for (i = 0; i < 28; i++) {
printf("\n");
}
}
if(arrayEqu(secInput, "run")) {
system(fileName);
}
com = 1;
}
it works fine. But when I leave it in, I get an error at the line marked with an *** that says 31 "[Warning] address of local variable `temp' returned."