我在将人名首字母的字符存储到来自如下结构的文件的char数组(字符串)中时遇到了问题:
AB Albert Bumble
FG Fred Goofoff
GF Gary Flintstone
DD Donald Duckchar finitlettMAX将存储所有首字母的首字母A F G D。char sinitlettMAX将存储所有首字母B G F D。
问题是,当我打印strlen(finitlett)时,这个数字大于文件中的条目数量。
这是我创建的代码,用于检索条目并将其放入数组中,如下所示:
void readf(char finitlett[], char sinitlett[], char name[][80])
{
char fileName[20] = "text.dat";
FILE*inFile = NULL;
inFile = fopen(fileName, "r");
if (inFile == NULL)
{
printf("Error in opening the file %s\n", fileName);
exit(0);
}
int i = 0;
while(fscanf(inFile, "%c%c%80[^\n]\n", &finitlett[i], &sinitlett[i], &name[i]) != EOF){
printf("Initials : %c%c | Name : %s\n", finitlett[i], sinitlett[i], name[i]);
i++;
}
fclose(inFile);
printf("Number of entries: %d\n", i);
printf("Length of array: %d\n", strlen(finitlett));
printf("Length of array: %d\n", strlen(sinitlett));
}发布于 2012-12-12 06:24:29
请确保使用'\0‘字符初始化数组。Strlen的工作原理是找到第一个'\0‘字符,如果你的数组没有完全填充这些字符,那么strlen可能会将剩下的“垃圾数据”作为字符串的一部分计算在char数组中。
https://stackoverflow.com/questions/13829437
复制相似问题