0
#include <stdio.h>
#include <stdlib.h>
#define MAX 20
#define MAX_BASE 8
#define ROW 9
#define COLUMN_SCORE 12
#define MAX_SKATER 4
typedef struct{
char name[MAX];
int elements;
float baseval[MAX_BASE];
int score[12][MAX_BASE];
double total_score;
}SKATER;
int getData(SKATER skater[MAX]);
int main (void)
{
// Global Declarations
SKATER skater[MAX_SKATER];
int num;
// Function calls
num = getData(skater);
return 0;
}
/********************************* getData ************************************
Pre:
Post:
*/
int getData(SKATER skater[MAX_SKATER])
{
// LOcal Declarations
FILE* fpIn;
int i = 0;
int k;
int j;
char buffer[100];
// Statements
if((fpIn = fopen("lab6data.txt","r"))==NULL)
{
printf("File opening error");
system("PAUSE");
exit(100);
}
while(i < MAX_SKATER && fgets(buffer, sizeof(buffer) - 1, fpIn))
{
sscanf(buffer,"%*c%19[^]%[^\n]", skater[i].name);
for(k = 0; k < MAX_BASE; k++)
printf("loop");
sscanf(buffer,"%d", &skater[i].elements, skater[i].baseval);
for(j = 0; j < COLUMN_SCORE; j++)
{
sscanf(buffer,"%d", skater[i].score[k][j]);
}
i++;
}
fclose(fpIn);
return i;
}
嗨,當我試圖調試代碼就說明我是緩衝溢出錯誤,我該如何解決這個問題?這是我第一次遇到這個錯誤,我也不確定我解決這個問題的方式是對的嗎?誰能告訴我一個辦法所以在這裏解決這個問題 是該問題的樣本數據:緩衝區超限問題進行調試時,一個C代碼
PLUSHENKO Evgeni
1 13.0 0 2 1 1 1 0 1 0 1 1 1 1
2 7.5 1 2 2 2 2 1 2 1 2 2 2 2
3 6.0 2 1 1 1 1 0 0 2 1 2 1 2
4 2.3 2 1 1 1 1 1 2 1 1 1 1 1
5 3.4 2 2 2 2 1 2 3 3 2 3 2 1
6 2.1 1 1 1 2 2 0 0 0 1 2 1 1
7 3.1 1 0 2 2 1 1 1 2 2 2 2 1
8 3.5 1 1 2 2 1 1 1 1 2 2 1 1
有此一個 感謝身邊的數據3個街區幫助
看起來像'sscanf(buffer,「%d」,skater [i] .score [k] [j]);'應該是'sscanf(buffer,「%d」,&skater [i] .score [k ] [j]);'(你錯過了一個'&')。 – DCoder 2012-03-18 06:59:28
我不確定程序的功能。但正如@DCoder所說,當你添加缺失和缺失時,程序正常運行 – 2012-03-18 07:08:39