いろいろとエラーが出てしまいます.
このプログラムはコマンドラインの引数1にテキストファイルの名前を入力してその中身を呼び出すのですが,
(例:%
./program "text.txt"
)
それを開いた上で,このままだとbufには"text.txt"の1行目しか入っていないことになるのでしょうか.
行目のputs(buf);では全ての内容が出てくるのですが,その後strstrを使ってその中の文字列を検索するとテキストの1行目からしか検索してないようになっています.(buf1は出力される)
buf2まで出力するにはどこを変更すればいいのでしょうか.
それと,これと関係あるかわからないのですが,その出力の後,必ずセグメントエラーが出てしまいます.この理由がわかりません.
以上のことがわかりませんでした.よろしければ回答お願いします.
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <string.h>
#include <netdb.h>
#include <unistd.h>
#define SERVER_NAME "zenith.edu.ics.saitama-u.ac.jp"
#define ERR -1
#define BUFSIZE 1024
#define MAX_LEN 256 /* 1行の最大文字数 -1 */
char *command_name;
int main(int argc, char* argv[]){
FILE *fp;
char buf[BUFSIZE];
char * buf1, *buf2;
if ((command_name = rindex(argv[0], '/')) != NULL)
command_name++;
else
command_name = argv[0];
fp=fopen(argv[1], "r");
while ((fgets(buf, MAX_LEN - 1, fp)) != NULL) {
buf[strlen(buf) - 1] = '\0'; /* 余分な改行コードを削除 */
//puts(buf); /*読み込んだ行を表示 */
buf1 = strstr(buf,"ject");
buf2 = strstr(buf,"Mon");
printf("%s\n", buf1);
printf("%s\n", buf2);
}
fclose(fp);
return 0;
}