私は宿題に取り組んでいます。私の理解の範囲を超えて作業する私のコードの問題の一部に悩まされています。私は多くのフォーラムを検索し、問題を克服するために他のアプローチを試みましたが、解決策を見つけることができませんでした。これは私のコードの削減問題の一部である...ファイルからの読み込みで奇妙な問題が発生する
while(!feof(transmissionsFile)){
int ret = fscanf(transmissionsFile, "%c %c %d", &tTms.tsn, &tTms.rsn, &tTms.sTime);
if(ret != 3) continue;
for(s = 0; s < N; ++s){
if(tmsMtx[s][tTms.sTime].tsn == ' '){
tmsMtx[s][tTms.sTime] = tTms;
break;
}
continue;
}
}
私が読んでいるファイルは、単純なテキストファイルです:
A B 3
C B 2
C A 1
B A 2
A C 3
B C 4
が、私は、ファイルを読み込むしようとしたとき、それが唯一の読み込み
A B 3
C A 1
A C 3
私もまったく同じ形式Fを使用しています、私は「RET」機能の戻り値をチェックしていると私は読んでそれがもののために3を返していることがわかり、未読のもののために二回回2 ... または他の構造にデータを完全に読み込む...私は行方不明のものがいくつかあるに違いないが、私はそれを理解できない。私はどんな指針もありがとうと思います:
これは私がこの問題を解決するために書いたコード全体です。この部分はトランジションマトリクスを作成し、マトリクスを埋めるために値を読み取るべきです。例:ファイルの1行目のT3のA〜B ...
#include <stdio.h>
int main() {
int N = 5;
// Opening required files ############################################
FILE *transmissionsFile = fopen("transmissions.txt", "r");
if (transmissionsFile == 0) {
printf("\nCould not open transmissions.txt\n");
return 1;
}
// Structure definitions ############################################
typedef struct transmissions {
char tsn;
char rsn;
int sTime;
} transmission;
// Constructing the transissions matrix ############################
transmission tTms = {' ', ' ', 0};
transmission tmsMtx[N][2*N];
int s,t;
for(s =0; s < N; s++){
for(t =0; t < 2*N; t++){
tmsMtx[s][t] = tTms;
}
}
while(!feof(transmissionsFile)){
int ret = fscanf(transmissionsFile, "%c %c %d", &tTms.tsn, &tTms.rsn, &tTms.sTime);
if(ret != 3) continue;
for(s = 0; s < N; ++s){
if(tmsMtx[s][tTms.sTime].tsn == ' '){
tmsMtx[s][tTms.sTime] = tTms;
break;
}
continue;
}
}
// Print out the transmission matrix ################################
system("cls");
printf ("\n The transmission matrix \n\n ");
for(t =0; t < 2*N; t++){
printf(" T%d\t", t);
}
printf("\n\n");
for(s =0; s < N; s++){
printf(" ");
for(t =0; t < 2*N; t++){
printf("%c-%c\t", tmsMtx[s][t].tsn, tmsMtx[s][t].rsn);
}
printf("\n\n");
}
// Closing files and ending program ################################
fclose(transmissionsFile);
return 0;
}
1) 'はfeof()'は常に間違っhttp://stackoverflow.com/q/5431941/9059022である)あなたのプログラムが消費しない各行の終わりには「\ n」があります。 – wildplasser
''%c%c%d "' - % "%c%c%d" – chux
ありがとう、このクイックトリックが動作します:)私は何かが行の最後に間違っていたと思った、 – alios