ravishankar_bs
April 24th, 2003, 10:18 AM
can you please suggest how I can read a line containing many strings,parse it and obtain an array of strings(word by word) and number of strings as return.
Thanks
Thanks
|
Click to See Complete Forum and Search --> : parseatring ravishankar_bs April 24th, 2003, 10:18 AM can you please suggest how I can read a line containing many strings,parse it and obtain an array of strings(word by word) and number of strings as return. Thanks Philip Nicoletti April 24th, 2003, 10:48 AM One way would be to read line by line into string, then use that string as input to a stringstream. Read from the stringstream to get the fields on that line. #include <iostream> #include <sstream> #include <fstream> #include <string> #include <vector> using namespace std; int main() { ifstream in("test.txt"); if (!in) { cout << "problem with file open" << endl; return 0; } string line; string field; while (std::getline(in,line)) { vector<string> vS; // the array of words on the current line istringstream iss(line); while (iss >> field) { vS.push_back(field); } cout << "Number of fields in the line = " << vS.size() << endl; } return 0; } ravishankar_bs April 24th, 2003, 10:56 AM I have written following program in C and getting error in line N1030 and in between.The charecter J is missing.Can you please locate the error. Thanks #include<conio.h> #include<stdio.h> #include<stdlib.h> #include<math.h> #include<string.h> #define MAXLEN 1000 #define MAX_TOKS 200 #define DELIMITERS " \t" #define MAX_STRING_LENGTH 255 int parseString(char* line, char*** argv) { char* buffer; int argc; buffer = (char*) malloc(strlen(line) * sizeof(char)+1); strcpy(buffer,line); printf("buffer is %s\n",buffer); (*argv) = (char**) malloc(MAX_TOKS * sizeof(char**)); argc = 0; (*argv)[argc++] = strtok(buffer, DELIMITERS); while ((((*argv)[argc] = strtok(NULL, DELIMITERS)) != NULL) && (argc < MAX_TOKS)) ++argc; buffer = NULL; printf("buffer after free is %s\n",buffer); return argc; } int main(void) { int count=0,count1=0; FILE *fp1,*fp2; char readline [MAXLEN],write [MAXLEN]=""; char **A; char input_file_name [50] ; double xt,yt,zt,it,jt,kt,tempX=0,tempY=0,tempZ=0; char X1[22],Y1[22],Z1[22],I1[22],J1[22],K1[22]; int n,i; /* printf ( "Give the name of your input file : " ) ; gets ( input_file_name ) ; fp1 = fopen ( input_file_name, "r" ) ;*/ fp1 = fopen ("CNCProgram.rtf","r"); /* Check we got the file open */ fp2 = fopen("CNCProgramH.rtf","w"); if(fp1 == NULL) {printf("Reading file unsuccessful\n"); return -1; /* exit the program */ } else {printf("File reading suceessful\n"); } while ( fgets(readline, MAXLEN, fp1) != NULL) { n=0; write[0]=0; /* Do something with readline here */ count++; printf("Line count is %d %s\n",count,readline); /* splits the input line into separate words */ n = parseString(readline, &A); printf("strings read:\t%d\n",n); for (i = 0; i < n; ++i) { printf("A[%d] = %s\n",i,A[i]); printf("A[i][0] = %c\n",A[i][0]); if((A[i][0]==('X')) || (A[i][0]==('x'))) { strcpy(X1,A[i]); printf("String X1 is = %s\n", X1); xt = atof( X1+1); printf("xt is = %3.3f\n", xt ); } if((A[i][0]==('Y')) || (A[i][0]==('y'))) { strcpy(Y1,A[i]); printf("String Y1 is = %s\n", Y1); yt = atof( Y1+1); printf("yt is = %3.3f\n", yt ); } if((A[i][0]==('Z')) || (A[i][0]==('z'))) { strcpy(Z1,A[i]); printf("String Z1 is = %s\n", Z1); zt = atof( Z1+1); printf("zt is = %3.3f\n", zt ); } if((A[i][0]==('I')) || (A[i][0]==('i'))) { strcpy(I1,A[i]); printf("String I1 is = %s\n", I1); it = atof( I1+1); printf("it is = %3.3f\n", it ); it=it+tempX; printf("it after addition is = %3.3f\n", it ); sprintf (A[i],"I%3.3f",it); printf("$$$$$$$$$$$ %s\n",A[i]); } if((A[i][0]==('J')) || (A[i][0]==('j'))) { strcpy(J1,A[i]); printf("String J1 is = %s\n", J1); jt = atof( J1+1); printf("jt is = %3.3f\n", jt ); jt=jt+tempY; printf("jt after addition is = %3.3f\n", jt ); sprintf (A[i],"J%3.3f\n",jt); printf("$$$$$$$$$$$ %s\n",A[i]); } if((A[i][0]==('K')) || (A[i][0]==('k'))) { strcpy(K1,A[i]); printf("String K1 is = %s\n", K1); kt = atof( K1+1); printf("kt is = %3.3f\n", kt ); kt=kt+tempZ; printf("kt after addition is = %3.3f\n", kt ); sprintf (A[i],"K%3.3f\n",kt); printf("$$$$$$$$$$$ %s\n",A[i]); } strcat(write,A[i]); strcat(write," "); } tempX=xt; printf("tempX is = %3.3f\n", tempX ); tempY=yt; printf("tempY is = %3.3f\n", tempY ); tempZ=zt; printf("tempZ is = %3.3f\n", tempZ ); printf("Writeline is %s \n",write); fprintf(fp2,"%s",write); } fclose(fp1); fclose(fp2); return 0; } To be saved as CNCProgram.rtf TEST G71 N10 T35 N20 G00 G90 X20.0 Y20.0 M03 S500 N30 G01 G43 Z10.0 F4000 N40 G01 X16.182 Y16.182 Z-11.000 N50 G02 X17.115 Y13.929 I13.929 J13.929 N60 G01 X17.115 Y-13.929 N70 G02 X16.182 Y-16.182 I13.929 J-13.929 N80 G02 X13.929 Y-17.115 I13.929 J-13.929 N90 G01 X-13.929 Y-17.115 N100 G02 X-16.182 Y-16.182 I-13.929 J-13.929 N110 G02 X-17.115 Y-13.929 I-13.929 J-13.929 N120 G01 X-17.115 Y13.929 N130 G02 X-16.182 Y16.182 I-13.929 J13.929 N140 G02 X-13.929 Y17.115 I-13.929 J13.929 N150 G01 X13.929 Y17.115 N160 G02 X16.182 Y16.182 I13.929 J13.929 N180 G01 X21.311 Y21.311 Z-22.000 N190 G02 X22.244 Y19.059 I19.059 J19.059 N200 G01 X22.244 Y-19.059 N210 G02 X21.311 Y-21.311 I19.059 J-19.059 N220 G02 X19.059 Y-22.244 I19.059 J-19.059 N230 G01 X-19.059 Y-22.244 N240 G02 X-21.311 Y-21.311 I-19.059 J-19.059 N250 G02 X-22.244 Y-19.059 I-19.059 J-19.059 N260 G01 X-22.244 Y19.059 N270 G02 X-21.311 Y21.311 I-19.059 J19.059 N280 G02 X-19.059 Y22.244 I-19.059 J19.059 N290 G01 X19.059 Y22.244 N300 G02 X21.311 Y21.311 I19.059 J19.059 N320 G01 X26.441 Y26.441 Z-33.000 N330 G02 X27.374 Y24.188 I24.188 J24.188 N340 G01 X27.374 Y-24.188 N350 G02 X26.441 Y-26.441 I24.188 J-24.188 N360 G02 X24.188 Y-27.374 I24.188 J-24.188 N370 G01 X-24.188 Y-27.374 N380 G02 X-26.441 Y-26.441 I-24.188 J-24.188 N390 G02 X-27.374 Y-24.188 I-24.188 J-24.188 N400 G01 X-27.374 Y24.188 N410 G02 X-26.441 Y26.441 I-24.188 J24.188 N420 G02 X-24.188 Y27.374 I-24.188 J24.188 N430 G01 X24.188 Y27.374 N440 G02 X26.441 Y26.441 I24.188 J24.188 N460 G01 X31.570 Y31.570 Z-44.000 N470 G02 X32.503 Y29.318 I29.318 J29.318 N480 G01 X32.503 Y-29.318 N490 G02 X31.570 Y-31.570 I29.318 J-29.318 N500 G02 X29.318 Y-32.503 I29.318 J-29.318 N510 G01 X-29.318 Y-32.503 N520 G02 X-31.570 Y-31.570 I-29.318 J-29.318 N530 G02 X-32.503 Y-29.318 I-29.318 J-29.318 N540 G01 X-32.503 Y29.318 N550 G02 X-31.570 Y31.570 I-29.318 J29.318 N560 G02 X-29.318 Y32.503 I-29.318 J29.318 N570 G01 X29.318 Y32.503 N580 G02 X31.570 Y31.570 I29.318 J29.318 N600 G01 X36.699 Y36.699 Z-55.000 N610 G02 X37.632 Y34.447 I34.447 J34.447 N620 G01 X37.632 Y-34.447 N630 G02 X36.699 Y-36.699 I34.447 J-34.447 N640 G02 X34.447 Y-37.632 I34.447 J-34.447 N650 G01 X-34.447 Y-37.632 N660 G02 X-36.699 Y-36.699 I-34.447 J-34.447 N670 G02 X-37.632 Y-34.447 I-34.447 J-34.447 N680 G01 X-37.632 Y34.447 N690 G02 X-36.699 Y36.699 I-34.447 J34.447 N700 G02 X-34.447 Y37.632 I-34.447 J34.447 N710 G01 X34.447 Y37.632 N720 G02 X36.699 Y36.699 I34.447 J34.447 N740 G01 X41.829 Y41.829 Z-66.000 N750 G02 X42.762 Y39.576 I39.576 J39.576 N760 G01 X42.762 Y-39.576 N770 G02 X41.829 Y-41.829 I39.576 J-39.576 N780 G02 X39.576 Y-42.762 I39.576 J-39.576 N790 G01 X-39.576 Y-42.762 N800 G02 X-41.829 Y-41.829 I-39.576 J-39.576 N810 G02 X-42.762 Y-39.576 I-39.576 J-39.576 N820 G01 X-42.762 Y39.576 N830 G02 X-41.829 Y41.829 I-39.576 J39.576 N840 G02 X-39.576 Y42.762 I-39.576 J39.576 N850 G01 X39.576 Y42.762 N860 G02 X41.829 Y41.829 I39.576 J39.576 N880 G01 X46.958 Y46.958 Z-77.000 N890 G02 X47.891 Y44.706 I44.706 J44.706 N900 G01 X47.891 Y-44.706 N910 G02 X46.958 Y-46.958 I44.706 J-44.706 N920 G02 X44.706 Y-47.891 I44.706 J-44.706 N930 G01 X-44.706 Y-47.891 N940 G02 X-46.958 Y-46.958 I-44.706 J-44.706 N950 G02 X-47.891 Y-44.706 I-44.706 J-44.706 N960 G01 X-47.891 Y44.706 N970 G02 X-46.958 Y46.958 I-44.706 J44.706 N980 G02 X-44.706 Y47.891 I-44.706 J44.706 N990 G01 X44.706 Y47.891 N1000 G02 X46.958 Y46.958 I44.706 J44.706 N1020 G01 X52.087 Y52.087 Z-88.000 N1030 G02 X53.020 Y49.835 I49.835 J49.835 N1040 G01 X53.020 Y-49.835 N1050 G02 X52.087 Y-52.087 I49.835 J-49.835 N1060 G02 X49.835 Y-53.020 I49.835 J-49.835 N1070 G01 X-49.835 Y-53.020 N1080 G02 X-52.087 Y-52.087 I-49.835 J-49.835 N1090 G02 X-53.020 Y-49.835 I-49.835 J-49.835 N1100 G01 X-53.020 Y49.835 N1110 G02 X-52.087 Y52.087 I-49.835 J49.835 N1120 G02 X-49.835 Y53.020 I-49.835 J49.835 N1130 G01 X49.835 Y53.020 N1140 G02 X52.087 Y52.087 I49.835 J49.835 N1160 G01 X57.217 Y57.217 Z-99.000 N1170 G02 X58.150 Y54.964 I54.964 J54.964 N1180 G01 X58.150 Y-54.964 N1190 G02 X57.217 Y-57.217 I54.964 J-54.964 N1200 G02 X54.964 Y-58.150 I54.964 J-54.964 N1210 G01 X-54.964 Y-58.150 N1220 G02 X-57.217 Y-57.217 I-54.964 J-54.964 N1230 G02 X-58.150 Y-54.964 I-54.964 J-54.964 N1240 G01 X-58.150 Y54.964 N1250 G02 X-57.217 Y57.217 I-54.964 J54.964 N1260 G02 X-54.964 Y58.150 I-54.964 J54.964 N1270 G01 X54.964 Y58.150 N1280 G02 X57.217 Y57.217 I54.964 J54.964 N1300 G01 X62.346 Y62.346 Z-110.000 N1310 G02 X63.279 Y60.094 I60.094 J60.094 N1320 G01 X63.279 Y-60.094 N1330 G02 X62.346 Y-62.346 I60.094 J-60.094 N1340 G02 X60.094 Y-63.279 I60.094 J-60.094 N1350 G01 X-60.094 Y-63.279 N1360 G02 X-62.346 Y-62.346 I-60.094 J-60.094 N1370 G02 X-63.279 Y-60.094 I-60.094 J-60.094 N1380 G01 X-63.279 Y60.094 N1390 G02 X-62.346 Y62.346 I-60.094 J60.094 N1400 G02 X-60.094 Y63.279 I-60.094 J60.094 N1410 G01 X60.094 Y63.279 N1420 G02 X62.346 Y62.346 I60.094 J60.094 N1440 G01 X67.476 Y67.476 Z-121.000 N1450 G02 X68.409 Y65.223 I65.223 J65.223 N1460 G01 X68.409 Y-65.223 N1470 G02 X67.476 Y-67.476 I65.223 J-65.223 N1480 G02 X65.223 Y-68.409 I65.223 J-65.223 N1490 G01 X-65.223 Y-68.409 N1500 G02 X-67.476 Y-67.476 I-65.223 J-65.223 N1510 G02 X-68.409 Y-65.223 I-65.223 J-65.223 N1520 G01 X-68.409 Y65.223 N1530 G02 X-67.476 Y67.476 I-65.223 J65.223 N1540 G02 X-65.223 Y68.409 I-65.223 J65.223 N1550 G01 X65.223 Y68.409 N1560 G02 X67.476 Y67.476 I65.223 J65.223 N1580 G01 Z10.0 N1590 M02 fcone1403 G71 codeguru.com
Copyright Internet.com Inc., All Rights Reserved. |