|
-
April 24th, 2003, 10:18 AM
#1
parseatring
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
-
April 24th, 2003, 10:48 AM
#2
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.
Code:
#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;
}
-
April 24th, 2003, 10:56 AM
#3
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
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|