gpt4 book ai didi

C sscanf() 在读取 pgm 文件时返回零

转载 作者:太空宇宙 更新时间:2023-11-04 06:29:28 27 4
gpt4 key购买 nike

我正在尝试读取一个 pgm 文件并将其放入一个数组中进行赋值,我将它放到可以将每一行放入一个字符串中的位置,然后我尝试对每一行进行 sscanf 以获取值,但它总是把num 中的零,不管它到底是什么。这可能与 pgm 文件每列之间有 1 或 2 个空格有关,但我不确定`

int **image = (int**) malloc(*numCols * sizeof(int*));
int i;
for(i = 0; i < *numCols; i++)
{
image[i] = (int *) malloc(*numRows * sizeof(int));
}


int r,c;
int num = 0;
char *line = (char *) malloc(*numCols * sizeof(char));
for(r = 0; r < *numRows; r++)
{
int number = (*numCols * sizeof(int));
fgets(line, number, in);

for(c = 0; c < *numCols; c++)
{
sscanf(line,"%d",&num);
printf("%d",num);
image[r][c] = num;
}
sscanf(line,"%*[\n]");
printf("\n");
}
return image;

最佳答案

PGM file不以数字开头,请使用文本编辑器打开文件以查找其格式。另一个问题是,如果你像那样使用 sscanf(),你将只会永久读取第一个数字,也许你需要 strtok() 或者像这样:

int offset = 0, readCount;
for(c = 0; c < *numCols; c++)
{
sscanf(line + offset,"%d%n",&num, &readCount);
printf("%d",num);
image[r][c] = num;
offset += readCount;
}

关于C sscanf() 在读取 pgm 文件时返回零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22264495/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com