-3
現在、ファイルの処理とソートを行っています。これまではファイルを開いて各行を読むことができます。今、私は各行を特定の部分に分割しようとしています。唯一の問題は、printf( "%s \ n"、行)で行を印刷するとき、私の関数のconvertLine()です。それは私が望むものを正確に印刷します。しかし、私はこれをメインではなく、mainから呼び出された関数convertLine()に出力する必要があります。ここに私のconvertLine()関数は次のとおりです。異なる機能で操作されても、文字配列が変更されない
void convertLine(char line[401], int *number, char fileLine[401])
{
char firstNum[2] = { fileLine[6] };
char secondNum[2] = { fileLine[7] };
char thirdNum[2] = { fileLine[8] };
char colonChar[2] = { fileLine[9] };
char fullMark[7] = { "" };
int length = 0;
length = strlen(fileLine);
++length;
line = (char*)malloc(length);
strcpy(fullMark, firstNum);
strcat(fullMark, secondNum);
strcat(fullMark, thirdNum);
*number = atoi(fullMark);
if (strstr(secondNum, ":")) //this works
{
strcpy(line, &fileLine[7]);
}
else if (strstr(secondNum, ":"))
{
strcpy(line, &fileLine[8]);
}
else
{
strcpy(line, &fileLine[9]);
}
printf("%s \n", line); //i want to be able to do this in main
length = strlen(line);
++length;
line = (char *)realloc(line, length);
free(line);
return;
}
コードは意味をなさない。まず、Cはコールバイバリューです。次に、 'line =(char *)realloc(line、length);無料(行); 'は完全に無意味です。 – EOF
確かに、私は混乱を理解しています。私はCがコールバイ値であることを理解していますが、次に、この関数の数値変数をメインで操作したときにどうやって表示されますか?また、内部の内容が変更され、異なる量のスペースを占める場合、なぜ私のライン配列のスペースを再配置するのが無意味なのでしょうか? – bodotheguy
本当に 'c'の絶対的な基礎から始める必要があります。私はこのプログラムのすべてのエラーを説明する時間がありませんし、文字列リテラルと文字列を '=='で比較する誰かに、支払いなしで 'c'を書く方法を教えたいと思っていません。 – EOF