佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1380|回复: 4

C语言(新手),读取不到‘0’

[复制链接]
发表于 2-11-2013 04:18 PM | 显示全部楼层 |阅读模式
  1. <blockquote><div class="blockcode"><blockquote>void main()
  2. {
  3.     FILE *open;
  4.     open=fopen("Customer.txt","r");
  5.     CUSTOMER customer1;

  6.     char ppl[10];
  7.     while( fscanf(open,"%d|%[^|]|%[^|]|%[^|]|%[^|]|%d %d %d %[^\n]\n",
  8.                &customer1.phone_number, &customer1.surename, &customer1.givename, &customer1.addr1, &customer1.addr2, &customer1.DOB.date, &customer1.DOB.month, &customer1.DOB.year, ppl)!=EOF)
  9.     {
  10.   
  11.         printf("%d %s, %s. %d-%d-%d\n",customer1.phone_number,customer1.addr1,customer1.addr2,customer1.DOB.date,customer1.DOB.month,customer1.DOB.year);
  12.     }
  13. }
复制代码
以下是Customer.txt
  1. 0112233445|Wang|Lee-Hom|12 Jalan Genting|Klang|12 12 1990 Tom
  2. 0123456789|Tan|Ah Chong|33 Platinum Victory|Penang|2 6 1996 Boss
  3. 1235792468|Lee|Bruce|88 Taman Bunga Raya|Johor|10 10 1993 Jack
  4. 0166778899|TAM|Alan KK|12 Jalan Malinja|K Kinabalu| 1 1 1990 Boss
复制代码
print 出来的是
112233445 ******
123456789 ******
1235792468 ******
166778899 ******

那些0 都不见了。。。
能将一下是什么问题吗?



本帖最后由 kevin999990 于 2-11-2013 04:22 PM 编辑

回复

使用道具 举报


ADVERTISEMENT

发表于 2-11-2013 04:38 PM | 显示全部楼层
%d是decimal,開頭的0都會沒有掉的...
你可以try %c把號碼當作character...

^
我猜罷了,不懂work沒有... 很久沒有用C了...
回复

使用道具 举报

 楼主| 发表于 5-11-2013 10:53 AM | 显示全部楼层
Jason929 发表于 2-11-2013 04:38 PM
%d是decimal,開頭的0都會沒有掉的...
你可以try %c把號碼當作character...

刚刚试了一下,可以读到了。
谢谢你。

另外想请问下,如何把那些号码转去int?
回复

使用道具 举报

发表于 5-11-2013 11:21 AM | 显示全部楼层
kevin999990 发表于 5-11-2013 10:53 AM
刚刚试了一下,可以读到了。
谢谢你。


如果你只是要display電話號碼,其實不需要converter回去integer/decimal value的。



不過leh...

還有另一個方法,就是 “%nd”...

n = 你要print的decimal的total length,如果你的length是10,但是你只print 3個字,左邊都會fill with 0。
  1. example:
  2. int number = 123;
  3. printf("%010d", number);

  4. result:0000000123
复制代码
所以如果你的data裡面,全部電話號碼都是10個字的話,就能用這個方法。

try下看可以沒有...
回复

使用道具 举报

 楼主| 发表于 5-11-2013 06:48 PM | 显示全部楼层
Jason929 发表于 5-11-2013 11:21 AM
如果你只是要display電話號碼,其實不需要converter回去integer/decimal value的。

这个之前try过了, 但是像1123456789这样的会变成0123456789。。。
那个应该是coding的问题,我把全部打过,用%c来读后,就没有了。

需要用到的function都成功了,谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 14-8-2025 10:50 PM , Processed in 0.134853 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表