私はcコードを持っています、単にtxtファイルから行を読み込みます。ファイルは以下の通りであるだけで1行があります。C - fgetsがCR文字をスキップ
をこの行を読むためのコードスニペットは、次のとおりです。
int** readFile(char* filename){
int col=0, row =0;
int i=0;
int* numList[2048];
for(int i = 0; i<2048; i++)
numList[i] = (int*) malloc(6*sizeof(int));
if(NULL == numList){
printf("Memory error!");
}
char * token = NULL;
char currentLine[25] = {'\0'};
FILE* file = fopen(filename, "r");
if(NULL != file){
printf("File is opened successfully\n");
if(NULL != fgets (currentLine, 60, file))
{
int i = 0;
while (NULL != currentLine[i]){
printf("%d ", currentLine[i]);
i++;
}
}
}
else
{
printf("File I/O Error");
return NULL;
}
fclose(file);
return numList;
}
このコードが実行されると、私は次の出力を得る:
を私は疑わしいものを観察しました。これは、最初のスクリーンショット(Content of txt file)で見られるように、Notepa d ++は行末にCR LFを表示します。しかし、出力では、私はLFである最後の文字として10を参照してください。
おそらく私は非常に原始的な点を見逃していますが、私はなぜCRキャラクターが存在しないのか理解できませんでした。
言うまでもなく、プラットフォームはウィンドウであり、これはコンソールプログラムです。
ありがとうございました&よろしく。
1)Windows環境では、相互変換(LF <-> CRLF)されますテキストモードの入出力で行われます。 – BLUEPIXY
2) '60' <->' 25'はサイズに一致しません。 – BLUEPIXY
'numList'は、自動ストレージクラスを持つ配列(つまり、スタック上のローカル変数)として宣言しています。関数の最後には' return numList; 'があります。スタック上の変数へのポインタが返され、_undefined behavior_になります。 –