当我在一个文件里写的时候我有了一个新行,但是我不明白为什么:

for(j = 0; j < p_bdClients->tabClient[i].nbComptes; j++){
    fprintf(p_fichier, "%s %f\n",
        p_bdClients->tabClient[i].folios[j].unCompte,
        p_bdClients->tabClient[i].folios[j].solde);
}

我有:
compte1
solde1
compte2
solde2

我想要:
compte1 solde1
compte2 solde2

我在p_bdClients->tabClient[i].folios[j].unComptep_bdClients->tabClient[i].folios[j].solde上没有换行符。
我试过这个:
for(j = 0; j < p_bdClients->tabClient[i].nbComptes; j++){
   printf("%s\n", p_bdClients->tabClient[i].folios[j].unCompte);
}

我得到了:
compte1
compte2

但是这个密码:
for(j = 0; j < p_bdClients->tabClient[i].nbComptes; j++){
    printf("|%s| %f\n",
        p_bdClients->tabClient[i].folios[j].unCompte,
        p_bdClients->tabClient[i].folios[j].solde);
}

输出为-
| solde1
| solde2

我没有第一个“|”和p_bdClients->tabClient[i].folios[j].unCompte我不明白为什么。
使用:
for(j = 0; j < p_bdClients->tabClient[i].nbComptes; j++){
    for(w=0; w<strlen(p_bdClients->tabClient[i].folios[j].unCompte); ++w){
        printf("%02hhx ", p_bdClients->tabClient[i].folios[j].unCompte[w]);
}
}
printf("\n");

我有:
68 79 70 6f 74 68 65 71 75 65 0d 63 68 65 71 75 65 0d 65 70 61 72 67 6e 65 32 0d
63 68 65 71 75 65 0d 63 61 72 74 65 2d 63 72 65 64 69 74 0d
68 79 70 6f 74 68 65 71 75 65 0d 63 61 72 74 65 2d 63 72 65 64 69 74 0d 65 70 61 72 67 6e     65 31 0d 63 68 65 71 75 65 0d 65 70 61 72 67 6e 65 32 0d
63 68 65 71 75 65 0d 63 61 72 74 65 2d 63 72 65 64 69 74 0d 65 70 61 72 67 6e 65 31 0d
68 79 70 6f 74 68 65 71 75 65 0d
63 68 65 71 75 65 0d 65 70 61 72 67 6e 65 32 0d

谢谢你的帮助

最佳答案

每条线末端的0x0d(例如“68 79 70 6f 74 68 65 71 75 65 0d”)是acarriage return。不要将其存储在unCompte中(或设置为0x00),一切都会好起来的。

关于c - 返回以文件C语言编写的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19014098/

10-11 21:48