前提・実現したいこと
C言語のプログラムでコマンドラインから文字を受け取るようにしたい
発生している問題・エラーメッセージ
エラーメッセージは特になく、
数字なら書き込まれるのですが、英語が書き込まれません。
該当のソースコード
C
1#include <stdio.h> 2#include <stdlib.h> 3#include <string.h> 4 5int main(int argc, char *argv[]) 6{ 7 char line[80]; 8 if( argc != 6) 9 { 10 fprintf(stderr, "5つの引数を指定して下さい。\n"); 11 return 1; 12 } 13 FILE *in = fopen("spooky.csv", "r"); 14 FILE *file1 = fopen(argv[2], "w"); 15 FILE *file2 = fopen(argv[4], "w"); 16 FILE *file3 = fopen(argv[5], "w"); 17 while(fscanf(in, "%79[^\n]", line) == 1){ 18 if(strstr(line, argv[1])) 19 fprintf(file1, "%s\n", line); 20 else if (strstr(line, argv[3])) 21 fprintf(file2, "%s\n", line); 22 else 23 fprintf(file3, "%s\n", line); 24 } 25 fclose(file1); 26 fclose(file2); 27 fclose(file3); 28 return 0; 29}
試したこと
数字なら読み込まれることを確認
./categorize 30 aliens.csv 28 elvises.csv the_rest.csv
more aliens.csv
30.685163,-68.137207,Type=Yeti
./categorize Type aliens.csv Ship elvises.csv the_rest.csv
more aliens.csv
↑何も返さないことを確認しました。
補足情報
OS:macOS Sierra
環境:gcc
ソース編集及びコンパイルはターミナルを使用しました。
以下はspooky.csvの内容になります。
30.685163,-68.137207,Type=Yeti
28.304380,-74.575195,Type=UFO
29.132971,-71.136475,Type=Ship
28.343065,-62.753906,Type=Elvis
27.868217,-68.005371,Type=Goatsucker
30.496017,-73.333740,Type=Disappearance
26.224447,-71.477051,Type=UFO
29.401320,-66.027832,Type=Ship
37.879536,-69.477539,Type=Elvis
22.705256,-68.192139,Type=Elvis
27.166695,-87.484131,Type=Elvis
以上です。どなたか知見がある方、ご教示いただけると幸いです。
回答2件
あなたの回答
tips
プレビュー