我有一个二维数组,其中包含了来自一个文件的输入,我想把数组中的整数和字符串赋给不同的变量;整数设置正确,但字符串不起作用。
输入如下:
(1,2) apple 2 3 north
但所有的信息都在里面
char data[MAX_LINES][MAX_LEN];
我正在尝试使用sscanf赋值:
sscanf(data[i],"(%d,%d) %8s %d %d %8s",&x,&y,type,&age,&hun,direction);
忽略无关代码的代码结构
FILE *in_file = fopen(fileName,"r");
char data[MAX_LINES][MAX_LEN];
int x,y,age,hun;
char type[10];
char deriction[20];
if(! in_file){
printf("cannot read file\n");
exit(1);
}
int line=0;
while(!feof(in_file) && !ferror(in_file)){
if(fgets(data[line],MAX_LEN,in_file) !=NULL ){
char *check = strtok(data[line],d);
line++;
}
}
fclose(in_file);
for(int i = 9; i<14;i++){
sscanf(data[i],"(%d,%d) %8s %d %d %8s",&x,&y,type,&age,&hun,deriction);
}
2条答案
按热度按时间wfveoks01#
如果这不起作用,那么问题可能出在数组
data
中的数据上。o8x7eapl2#
有一行
char *check = strtok(data[line],d);
,我们还没有展示d
是什么,但是除非它是一个字符串,与输入行没有共同的字符,否则strtok()
只是损坏了存储的数据,用空字节替换了d
中的第一个字符,这意味着sscanf()
将失败,因为它没有查看整行。您有const char d[] = "\r\n";
或等效的,这不再是相关的,除了指出您应该显示足够的代码来重现问题。