cygwinを使ってcsvファイルを読み込み、出力させようとしています
cygwinを使ってcsvファイルを読み込み、出力させようとしています。
とりあえず、読み込みのみのプログラムを作成し、
実行させてみたのですが(run ファイル名.csv と入力)
「Error: could not start C:\cygwin\home\ユーザー名ファイル名.csv」
と出力され、読み込みができず、困っています。
プログラム初心者です。
恐縮ですがご回答よろしくお願いします。
以下に、読み込みプログラムとcsvファイルを記載します。
(プログラムは拾い物です。)
<プログラム>
#include <stdio.h>
#define MAX_ITEM_SIZE 100
#define MAX_LINE_SIZE 1024
char *GetCSVItem(char *wp, char *buff, int size);
void main(int argc, char *argv[])
{
FILE *fp;
char buff[MAX_LINE_SIZE], *wp, item[3][MAX_ITEM_SIZE];
int i1, len;
if(argc != 2){
printf("comand error nyuuryoku keishiki\n");
return;
}
fp = fopen(argv[1], "r");
if(fp == NULL){
printf("can not open file[%s].\n", argv[1]);
return;
}
for(;;){
if(fgets(buff, MAX_LINE_SIZE, fp) == NULL)
break;
len = strlen(buff);
if(len == 0 || buff[len-1] != '\n'){
if(feof(fp) == 0){
printf("data error[%s].\n", buff);
return;
}
}
buff[len-1] = '\0';
wp = buff;
if((wp = GetCSVItem(wp, item[0], MAX_ITEM_SIZE)) == NULL){
printf("error(1)\n");
break;
}
if((wp = GetCSVItem(wp, item[1], MAX_ITEM_SIZE)) == NULL){
printf("error(2)\n");
break;
}
if((wp = GetCSVItem(wp, item[2], MAX_ITEM_SIZE)) == NULL){
printf("error(3)\n");
break;
}
if(*wp != '\0'){
printf("error(4)\n");
break;
}
for(i1 = 0; i1 < 3; i1++){
printf("%d:%s\n", i1+1, item[i1]);
}
}
fclose(fp);
}
char *GetCSVItem(char *wp, char *buff, int size)
{
int i1;
buff[0] = '\0';
while(*wp == ' ' || *wp == '\t')
wp++;
if(*wp == '\0'){
return(NULL);
}
for(i1 = 0; i1 < MAX_ITEM_SIZE; i1++, wp++){
if(i1 >= size)
return(NULL);
buff[i1] = *wp;
if(*wp == '\0'){
buff[i1] = '\0';
return(wp);
}
if(*wp == ','){
wp++;
buff[i1] = '\0';
break;
}
}
return(wp);
}
<csvファイル>
1,2,3
11,12,13
21,22,23
お礼
neKo_deuxさん、回答ありがとうございます。 >ファイルシステムがNTFS(NT File System)でフォーマットされたディスクのみが利用できます。 なるほど。そういうことだったのですね。 ただ、「GetFileSecurity」関数の実行結果を確認したところTRUEが返ってきているようでした。 (ちなみに「GetSecurityDescriptorDacl」関数もTRUEを返しました) 他に原因があるのでしょうか?