【发布时间】:2014-02-07 13:17:20
【问题描述】:
我有一个名为 phobebook 的文件,我在其中检索我拥有的联系人数量(这里的 int 是在变量 cc 上分配的),然后保存了姓名、地址等。 问题是当我显示信息时,细节在那里,但它们用新行分隔。我试图把 \0 但它似乎不起作用。
typedef struct myphonebook{
char name[31];
char address[101];
char cellphone[11];
char email[21];
} Myphonebooktype;
FILE*db;
db = fopen("db.txt", "r");
fscanf(db, "%d" , &cc);
pb = (Myphonebooktype*)malloc(cc*sizeof(Myphonebooktype));
addcounter = cc;
for(i = 0; i<cc ; i++){
size_t lenn = strlen(pb[i].name);
if (pb[i].name[lenn - 1] == '\n') {
pb[i].name[lenn - 1] = '\0';
}
fgets(pb[i].name, sizeof(pb[i].name), db);
size_t lena = strlen(pb[i].address);
if (pb[i].address[lena - 1] == '\n') {
pb[i].address[lena - 1] = '\0';
}
fgets(pb[i].address, sizeof(pb[i].address), db);
size_t lenc = strlen(pb[i].cellphone);
if (pb[i].cellphone[lenc - 1] == '\n') {
pb[i].cellphone[lenc - 1] = '\0';
}
fgets(pb[i].cellphone, sizeof(pb[i].cellphone), db);
size_t lene = strlen(pb[i].email);
if (pb[i].email[lene - 1] == '\n') {
pb[i].email[lene - 1] = '\0';
}
fgets(pb[i].email, sizeof(pb[i].email), db);
}
【问题讨论】:
-
也尝试检查
\r,即如果找到\n或\r,则替换为\0 -
2 bruce wayne mansion 88888888 batman@hero.com john yeung 46 linggo 9393293226 my@yahoo.com 我的 db.txt 看起来像这样
-
@user3266210 把它放在问题中,不可能理解评论中的确切结构。
-
如果你在做
lenn = strlen(pb[i].name)那么我想pb[i].name[lenn - 1]将永远是\0...