首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C编程: Strlen( ),String,Chars问题

C编程: Strlen( ),String,Chars问题
EN

Stack Overflow用户
提问于 2012-12-12 06:17:02
回答 1查看 332关注 0票数 0

我在将人名首字母的字符存储到来自如下结构的文件的char数组(字符串)中时遇到了问题:

代码语言:javascript
复制
AB Albert Bumble
FG Fred Goofoff
GF Gary Flintstone
DD Donald Duck

char finitlettMAX将存储所有首字母的首字母A F G D。char sinitlettMAX将存储所有首字母B G F D。

问题是,当我打印strlen(finitlett)时,这个数字大于文件中的条目数量。

这是我创建的代码,用于检索条目并将其放入数组中,如下所示:

代码语言:javascript
复制
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));
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-12 06:24:29

请确保使用'\0‘字符初始化数组。Strlen的工作原理是找到第一个'\0‘字符,如果你的数组没有完全填充这些字符,那么strlen可能会将剩下的“垃圾数据”作为字符串的一部分计算在char数组中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13829437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档