제가하려는 것은 단순한 개념이지만 실제로는 실제로 작동시키지 못합니다.파일을 2D 문자 배열로 읽어들입니다.
내가 읽으려고하는 파일이 3 열 있습니다. 첫 번째와 두 번째는 정수 열이고 세 번째는 문자열입니다.
이 파일의 내용을 가져 와서 일련의 배열에 쓰려고합니다. 내 문제는 문자 배열, 2 차원에 놓여 있습니다.
Weight Value Object
1 10 (null)
2 25 (null)
5 40 (null)
7 100 (null)
나는에있는 파일을 구문 분석을 시도해야합니다
#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
#define NUMBER 128 //Maxmimum number of items/lines in file.
#define BUFFER 120 //Buffer length.
#define LENGTH 32 //Maximum length of lines in file.
//------------------------Global Variables. ---------------------------------------------
int iterations=0; //Will count number of times the calculation function is called.
int weight[NUMBER];
int value[NUMBER];
char object[NUMBER][LENGTH];
//------------------------Main. ---------------------------------------------------------
int main(void)
{
FILE *fp; //File pointer.
char buffer[120]; //Temporary storage
int result;
int i,j=0;
int weight[NUMBER];
int value[NUMBER];
char object[NUMBER][LENGTH];
fp=fopen("knapsack.data","r");
if(NULL==fp){
printf("Error opening file. \n");
exit(0);
}
//Print the file.
printf("Weight \t Value \t Object \n");
for(i=0;i<=NUMBER;i++){
while(NULL != fgets(buffer, 120, fp)){
result=sscanf(buffer, "%d %d %s", &weight[i], &value[i], object[i][0]);
printf("%d \t %d \t %s \n", weight[i], value[i], object[i][0]);
}
}
for(j=0;j<4;j++){
printf(" String i equals %s \n", object[j]);
}
fclose(fp);
}
I가 발생하고있어 문제는 인쇄에, 내가 문자열 칼럼의 내용과 같이 (NULL) 인 것을 찾을 수 있다는 것입니다 다른 방법, 아니면 내가 누락 된 작은 것입니까? 미리 감사드립니다.
하여 &없이, 두 부분에서 잘 작동합니다 : 이런 식으로 뭔가 작업을해야합니다 그 첫 번째 printf (while 루프)에서 작동합니다. 감사합니다. : 프로그램이 두 번째 문을 통해 떨어질 때, 나는 출력이 되나 무슨 확실하지 않다 : '''무게 값이 객체 1 10 마우스 2 (25)의 휴대 전화 5 40 태블릿 (7) (100) 노트북 문자열 내가 내가 내가 내가 예, 그것은 동일합니다 ''' – alldavidsluck
동일 문자열에 해당 문자열에 해당 노트북 문자열 같습니다. '& object [j] [0]'을 사용하십시오. 31보다 큰 길이의 문자열이 있으면 서로 오버런하는 문자열로 이어질 수 있으므로 여전히 문제가있을 수 있습니다. –
그 밖의 뭔가가 있어야합니다. 문자열의 길이는 20도되지 않습니다. 당신의 도움을 주셔서 감사합니다! 우수 답변으로 선정되었습니다. – alldavidsluck