フォーラムにはかなり新しくなっています。 私はファイルから読み込むプログラムを持っていますが、これまではファイルを2次元の文字配列にしています。私は今ここに2D「string」のはstrtokと構造体構造体に2Dのchar配列を配置すると、どこから開始するのかわからない
に各部品を配置する必要があり、私は私は迷ってしまいましたので、あなたが役立つことを願っコード
struct processes
{
char processNumber[20];
int quanta;
int priority;
}process;
と
int readSave(int argc, char ** argv)
{
int i,j,k,count;
size_t blocksize = 16;
char originalFile[256], newFile[1000][20];
int fileDes;
ssize_t status;
unsigned char buffer[blocksize];
strcpy(originalFile, argv[1]);
fileDes = open(originalFile, O_RDONLY); // open for reading
i=0;
status = 99;
while(status > 0) // while no error
{
status = read(fileDes, buffer, blocksize);
strcpy(newFile[i],buffer); //line 71
for(k = 0; k <= blocksize; k++)
{
buffer[k] = 0;
}
i++;
if(status < 0)
{
printf("\nERROR\n");
exit(6);
}
}
//remove later
for(j = 0; j < i; j++) // prints out string to make sure it was input properly
{
printf("%s", newFile[j]);
}
printf("\n");
close(fileDes);
//Don't know how to carry on
}
です EDIT struct processStruct processes [7000]; while(newFile!= NULL) { strcpy(processes [count] .processNumber、strtok(newFile [count]、 "\ n"))); processes [count] .quanta = atoi(strtok(NULL、 "\ n")); プロセス数[count] .priority = atoi(strtok(NULL、 "\ n"));
count ++;
}
私は@Igorによって与えられた構造体と入力を変更しますが、私はそれを実行したとき、私は、セグメンテーションフォールトを取得し、私は-Wallでコンパイルするとき、私は readtostring.cを得る:関数の中で「readSave」: readtostringを.c:71:3:警告: 'strcpy'の引数2を渡す際のポインタターゲットが符号性が異なる[-Wpointer-sign] /usr/include/string.h:128:14:注: 'const char * 制限 'が引数' unsigned char * 'タイプのもの
コードを変更してコンパイルしました struct processStruct processes [7000]; \t一方(にnewFile = NULL!) \t {\t \t strcpyの(工程[カウント] .processNumber、はstrtok(にnewFile [カウント]、 "\ n")); \t \t [count] .quanta = atoi(strtok(NULL、 "\ n"))); \t \t [count]個のプロセスです。priority = atoi(strtok(NULL、 "\ n")); \t \t \t \t count ++; \t} – MrEwok
私の問題は、ファイルを文字列に読み込もうとしているときに、fread()やその他のものではなくread()を使用しなければならないと思っています。配列が、私はどのようにわからない – MrEwok