c言語のシステムコールを勉強中で、ベクタを作る関数として以下のようなコードを見つけたのですが、
なぜこのコードでベクタが生成できるのか今一つ理解ができていません。
どなたか詳しい方がいましたら解説していただけないでしょうか。
int strtovec(char *s,char **v,int max){/to make vector/
int i,skip;
if(max<1||v==0){ skip=1; else skip=0; i=0; for(;;){ if(!skip&&i>=max-1){ v[i]=0; skip=1; } while(*s!='\0'&&isspace(*s))s++; if(*s=='\0')break; if(!skip)v[i]=s; i++; while(*s!='\0'&&!isspace(*s))s++; if(*s=='\0')break; *s='\0'; s++; } if(!skip)v[i]=0; i++; return i; }
}
ソースコードは<code>ボタンを使ってシンタックスハイライトにしてもらうと回答者はコードが読みやすく、テストしやすくなります。以下ヘルプを読んでソースコードの部分を修正してください。プレビューもちゃんと確認すること。
https://teratail.com/help/question-tips#questionTips3-5
コンパイルが通らないコードになっています。
「例解UNIX/Linuxプログラミング教室 システムコールを使いこなすための12講」のコード例5.9でしょうか。
処理のコメントが書かれていますがどの部分がわからないのでしょうか?
https://books.google.co.jp/books?id=JldaDwAAQBAJ&pg=PA211&lpg=PA211&dq=strtovec
表示されない場合は「すべて表示」をクリックして「212ページ」を選択すると表示されるようです。