我想要做的是概念上很简单,但我不能完全得到它在实践中的工作。从文件读取到二维字符数组
我有一个文件,我试图读取,有3列。第一个和第二个是整数列,而第三个包含一个字符串。
我正在把这个文件的内容写入一系列数组中。我的问题在于字符数组,它是二维的。
#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);
}
我现在遇到的问题是,在打印时,我发现字符串列的内容是(空),像这样:
Weight Value Object
1 10 (null)
2 25 (null)
5 40 (null)
7 100 (null)
我应该试图解析该文件中另一种方式,还是只是我想念的小东西? 在此先感谢。
工作在两个部分就好了,没有&这适用于第一个printf(在while循环中),谢谢。 :)但是,当程序落空至第二份声明,我不知道会发生什么,但输出是: '''重量值对象 110鼠标 2 25手机 5 40平板 7 100笔记本 字符串i等于笔记本 字符串i等于 字符串i等于 字符串i等于 ''' – alldavidsluck
是的,这是相同的。使用'&object [j] [0]'。如果长度大于31的字符串会导致字符串相互溢出,那么可能还存在问题。 –
必须是其他东西,字符串的长度不是20。谢谢你的帮助!被选为最佳答案。 – alldavidsluck