will someone help me fix the errors i am trying to make a ascii card deck

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Phillis2013
    New Member
    • Jan 2012
    • 14

    will someone help me fix the errors i am trying to make a ascii card deck

    Code:
    #include <stdio.h>
    #define ERROR 00404
    
    #include<iostream>
    using namespace std;
    int argc;
    char *argv[];
    int main(argc,argv)
    {
    	FILE *ascii_fd, *card_fd;
    	int arg = 1;
    	int format = 80;
    	int color = 0;
    	int corner = 0;
    	int cut = 2;
    	int interp = 0;
    	int punch = 4;
    	int table = 4;
    	int form = 1;
    	int logo = 0;
    
    	while ((arg < argc) && (argv[arg][0] == '-')) { /* command line arg */
    		if (strcmp(argv[arg],"-H80") == 0) {
    			format = 80;
    		} else if (strcmp(argv[arg],"-H82") == 0) {
    			format = 82;
    		} else if (strcmp(argv[arg],"-cream") == 0) {
    			color |= 0;
    		} else if (strcmp(argv[arg],"-white") == 0) {
    			color |= 1;
    		} else if (strcmp(argv[arg],"-yellow") == 0) {
    			color |= 2;
    		} else if (strcmp(argv[arg],"-pink") == 0) {
    			color |= 3;
    		} else if (strcmp(argv[arg],"-blue") == 0) {
    			color |= 4;
    		} else if (strcmp(argv[arg],"-green") == 0) {
    			color |= 5;
    		} else if (strcmp(argv[arg],"-orange") == 0) {
    			color |= 6;
    		} else if (strcmp(argv[arg],"-brown") == 0) {
    			color |= 7;
    		} else if (strcmp(argv[arg],"-stripe") == 0) {
    			color |= 8;
    		} else if (strcmp(argv[arg],"-round") == 0) {
    			corner = 0;
    		} else if (strcmp(argv[arg],"-square") == 0) {
    			corner = 1;
    		} else if (strcmp(argv[arg],"-uncut") == 0) {
    			cut = 0;
    		} else if (strcmp(argv[arg],"-right") == 0) {
    			cut = 1;
    		} else if (strcmp(argv[arg],"-left") == 0) {
    			cut = 2;
    		} else if (strcmp(argv[arg],"-both") == 0) {
    			cut = 3;
    		} else if (strcmp(argv[arg],"-interp") == 0) {
    			interp = 1;
    		} else if (strcmp(argv[arg],"-noprint") == 0) {
    			punch = 0;
    		} else if (strcmp(argv[arg],"-026comm") == 0) {
    			punch = table = 1;
    		} else if (strcmp(argv[arg],"-026ftn") == 0) {
    			punch = table = 2;
    		} else if (strcmp(argv[arg],"-029") == 0) {
    			punch = table = 4;
    		} else if (strcmp(argv[arg],"-EBCDIC") == 0) {
    			punch = 0;
    			table = 8;
    		} else if (strcmp(argv[arg],"-blank") == 0) {
    			form = 0; logo = 0;
    		} else if (strcmp(argv[arg],"-5081") == 0) {
    			form = 1; logo = 0;
    		} else if (strcmp(argv[arg],"-507536") == 0) {
    			form = 2; logo = 0;
    		} else if (strcmp(argv[arg],"-5280") == 0) {
    			form = 3; logo = 0;
    		} else if (strcmp(argv[arg],"-327") == 0) {
    			form = 4; logo = 0;
    		} else if (strcmp(argv[arg],"-733727") == 0) {
    			form = 5; logo = 0;
    		} else if (strcmp(argv[arg],"-888157") == 0) {
    			form = 6; logo = 0;
    		} else if (strcmp(argv[arg],"-FORTRAN") == 0) {
    			form = 6; logo = 0;
    		} else if (strcmp(argv[arg],"-help") == 0) {
    			fprintf( stderr, "\n%s [options] [input [output]]\n\n",
    				 argv[0] );
    			fprintf( stderr,
    			"Make a virtual punched card deck from an ASCII file.\n"
    			"If output is missing, output to stdout; if input is\n"
    			"also missing, input from stdin.  The options are:\n\n"
    			" -H80 -H82       columns per card (H80 default)\n\n"
     			" -cream -white -yellow -pink      card colors\n"
    			" -blue  -green -orange -brown     (cream default)\n\n"
     			" -stripe         color stripe, cream card (common)\n\n"
     			" -round -square  corners on cards (round default)\n\n"
     			" -uncut -both    which top corner is cut\n"
     			" -left  -right   (left default, right common)\n\n"
     			" -interp         this card has been interpreted\n\n"
     			" -026comm        what keypunch to use\n"
    			" -029 -026ftn    (029 default)\n"
    			" -EBCDIC         (uninterpreted and rare!)\n\n"
     			" -noprint        turn off printing in the punch\n\n"
     			" -blank -5081	  what preprinted form to use\n"
     			" -507536 -5280   (blank default, all common)\n"
    			" -327 -733737\n"
    			" -888157\n\n"
    			);
    			exit(-1);
    		} else {
    			fprintf( stderr, "%s: unknown option %s;"
    					 " -help available\n",
    				 argv[0], argv[arg] );
    			exit(-1);
    		}
    		arg++;
    	}
    
    	if ( (argc - arg) > 2 ) { /* too many arguments */
    		fprintf( stderr, "%s: too many arguments\n",
    			argv[0] );
    		exit(-1);
    	}
    
    	if ( (argc - arg) < 1 ) { /* no arguments, program is a filter */
    		ascii_fd = stdin;
    		card_fd = stdout;
    	} else { /* at least one argument */
    		ascii_fd = fopen(argv[arg],"r");
    		if ( ascii_fd == NULL ) {
    			fprintf( stderr, "%s %s: invalid ascii file\n",
    				argv[0], argv[arg] );
    			exit(-1);
    		}
    		if ( (argc - arg) < 2 ) { /* only one arguments */
    			card_fd = stdout;
    		} else { /* at least two arguments */
    			card_fd = fopen(argv[arg+1],"w");
    			if ( card_fd == NULL ) {
    				fprintf( stderr, "%s %s: invalid card file\n",
    					argv[0], argv[arg+1] );
    				exit(-1);
    			}
    		}
    	}
    
    	/* output file prefix */
    	fputc( 'H', card_fd );
    	fputc( '8', card_fd );
    	if (format == 80) {
    		fputc( '0', card_fd );
    	} else {
    		fputc( '2', card_fd );
    	}
    	
    	/* ready to process from ascii_fd to card_fd */
    
    	while( !feof(ascii_fd)) {
    		char line[82]; /* size allows for H82 format */
    		int src_col = 1;
    		int max_col;
    		line[0] = ' ';
    		line[81] = ' ';
    		while (src_col < 81) {
    			int cur_char = fgetc(ascii_fd);
    			if ((cur_char == EOF) && (src_col == 1)) break;
    			if ((cur_char == EOF) || (cur_char == '\n')) {
    				while (src_col < 81) { /* blank out card */
    					line[src_col] = ' ';
    					src_col++;
    				}
    			} else if (cur_char == '\t') {
    				do {
    					line[src_col] = ' ';
    					src_col++;
    				} while(((src_col & 07) != 1)&&(src_col < 81));
    			} else {
    				line[src_col] = cur_char;
    				src_col++;
    			}
    		}
    		if (src_col == 1) break; /* avoid blank card for early EOF */
    
    		/* put out prefix on card */
    		fputc( 0x80 | (color << 3) | (corner << 2) | cut, card_fd );
    		fputc( 0x80 | (interp << 6) | (punch << 3) | form, card_fd );
    		fputc( 0x80 | logo, card_fd );
    
    		if (format == 80) {
    			src_col = 1;
    			max_col = 80;
    		} else { /* H82 */
    			src_col = 0;
    			max_col = 81;
    		}
    		while (src_col <= max_col) {
    			char even_ch, odd_ch; /* source characters */
    			int even_col, odd_col; /* corresponding 12 bit codes */
    			char first, second, third; /* packed for output */
    
    			/* get two columns */
    			even_ch = line[src_col];
    			src_col++;
    			odd_ch = line[src_col];
    			src_col++;
    			
    			/* convert to card codes */
    			if (table == 1) {
    				even_col = o26_comm_code[ even_ch ];
    				odd_col = o26_comm_code[ odd_ch ];
    			} else if (table == 2) {
    				even_col = o26_ftn_code[ even_ch ];
    				odd_col = o26_ftn_code[ odd_ch ];
    			} else if (table == 4) {
    				even_col = o29_code[ even_ch ];
    				odd_col = o29_code[ odd_ch ];
    			} else { /* table == 8 */
    				even_col = EBCDIC_code[ even_ch ];
    				odd_col = EBCDIC_code[ odd_ch ];
    			}
    
    			/* divide 2 columns into 3 bytes */
    			first = even_col >> 4;
    			second = ((even_col & 017) << 4)
    			       | (odd_col >> 8);
    			third = odd_col & 00377;
    
    			/* output 3 bytes */
    			fputc( first, card_fd );
    			fputc( second, card_fd );
    			fputc( third, card_fd );
    		}
    	}
    
    	fclose(ascii_fd);
    	fclose(card_fd);
    }
    here are my errors
    1>------ Build started: Project: .3, Configuration: Debug Win32 ------
    1> 3.cpp
    1>c:\documents and settings\wigund lach\my documents\visua l studio 2010\projects\. 3\.3\3.cpp(130) : warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_ WARNINGS. See online help for details.
    1> c:\program files\microsoft visual studio 10.0\vc\include \stdio.h(234) : see declaration of 'fopen'
    1>c:\documents and settings\wigund lach\my documents\visua l studio 2010\projects\. 3\.3\3.cpp(139) : warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_ WARNINGS. See online help for details.
    1> c:\program files\microsoft visual studio 10.0\vc\include \stdio.h(234) : see declaration of 'fopen'
    1>c:\documents and settings\wigund lach\my documents\visua l studio 2010\projects\. 3\.3\3.cpp(210) : error C2065: 'o26_comm_code' : undeclared identifier
    1>c:\documents and settings\wigund lach\my documents\visua l studio 2010\projects\. 3\.3\3.cpp(211) : error C2065: 'o26_comm_code' : undeclared identifier
    1>c:\documents and settings\wigund lach\my documents\visua l studio 2010\projects\. 3\.3\3.cpp(213) : error C2065: 'o26_ftn_code' : undeclared identifier
    1>c:\documents and settings\wigund lach\my documents\visua l studio 2010\projects\. 3\.3\3.cpp(214) : error C2065: 'o26_ftn_code' : undeclared identifier
    1>c:\documents and settings\wigund lach\my documents\visua l studio 2010\projects\. 3\.3\3.cpp(216) : error C2065: 'o29_code' : undeclared identifier
    1>c:\documents and settings\wigund lach\my documents\visua l studio 2010\projects\. 3\.3\3.cpp(217) : error C2065: 'o29_code' : undeclared identifier
    1>c:\documents and settings\wigund lach\my documents\visua l studio 2010\projects\. 3\.3\3.cpp(219) : error C2065: 'EBCDIC_code' : undeclared identifier
    1>c:\documents and settings\wigund lach\my documents\visua l studio 2010\projects\. 3\.3\3.cpp(220) : error C2065: 'EBCDIC_code' : undeclared identifier
    ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
  • donbock
    Recognized Expert Top Contributor
    • Mar 2008
    • 2427

    #2
    The first several messages are warning you that fopen is deprecated for serious production code; and that fopen_s is preferred. It goes on to say you suppress these warnings by (I suppose) #defining macro _CRT_SECURE_NO_ WARNINGS. You should check your online Visual Studio documentation for more information.

    The last few messages warn you that lookup arrays o26_comm_code, o26_ftn_code, 029_code, and EBCDIC_code are undefined. Do you intend for them to be defined locally in this source file or referenced from another source file?

    Comment

    Working...