| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 639 人关注过本帖
标题:一个简单的只输入和读出的通讯录程序,帮忙看看哪里错了
只看楼主 加入收藏
traveller、z
Rank: 2
等 级:论坛游民
帖 子:49
专家分:34
注 册:2014-12-2
结帖率:75%
收藏
已结贴  问题点数:5 回复次数:5 
一个简单的只输入和读出的通讯录程序,帮忙看看哪里错了
#include<stdio.h>
#include <windows.h>
#include<windows.h>
#include<stdlib.h>
#define NUM 100

struct classmates
{
    char name;
    char sex;
    int phone;
    int QQ;
    char  address;
}classmates[NUM], *p;

void print()
{
    int i,n=1,choose;
    for (i = 0; i < NUM; i++, p++)
    {
        n = i;
        printf("输入名字:\n");
        scanf("%s", &p->name);
        printf("输入性别:\n");
        scanf("%s", &p->sex);
        printf("电话:\n");
        scanf("%d", &p->phone);
        printf("输入QQ:\n");
        scanf("%d", &p->QQ);
        printf("输入地址:\n");
        scanf("%s", &p->address);
        printf("是否继续:1.继续  ;0.退出并保存;  ");
        scanf("%d", &choose);
        if (choose == 1)
            print();
        else
            exit(0);
    }
}

int main()
{
    FILE *fp;
    int i,n;
    p = classmates;
    if ((fp = fopen("E:\\play\\classmates_list", "r+")) == NULL);
    {
        printf("can't  create  file!\n");
        exit(0);
    }        //判断文件是否存在,是否能正常打开
   
    void print();

    for (i = 0; i < n; i++, p++)
        fprintf(fp, "%s%s%d%d%s", p->name,p->sex,p->phone, p->QQ, p->address);
                //输入到指定文件中

    //以下为从文件中调出并打印该通讯录
    rewind(fp);//返回到流开头
    for (i = 0; i < n; i++, p++)
        fscanf(fp, "%s%s%d%d%s", &p->name, &p->sex, &p->phone, &p->QQ, &p->address);//从文件中读入数据并赋给相应地址
    for (i = 0; i < n; i++, p++)
        printf("%s\n%s\n%d\n%d\n%s\n", p->name, p->sex, p->phone, p->QQ, p->address);//打印该通讯录

    fclose(fp);
}



这程序我一直不能调用文件,一直显示这:"can't  create  file!  求教

[ 本帖最后由 traveller、z 于 2015-4-1 21:34 编辑 ]
搜索更多相关主题的帖子: address include 通讯录 电话 
2015-04-01 20:51
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:3 
r+ 以可读写方式打开文件,该文件必须存在。

另外

main.c(55,43) :  warning: format specifies type 'char *' but the argument has
      type 'char' [-Wformat]
        fprintf(fp, "%s%s%d%d%s", p->name,p->sex,p->phone, p->QQ, p->address);
                       ~~                 ^~~~~~
                       %c
main.c(55,67) :  warning: format specifies type 'char *' but the argument has
      type 'char' [-Wformat]
        fprintf(fp, "%s%s%d%d%s", p->name,p->sex,p->phone, p->QQ, p->address);
                             ~~                                   ^~~~~~~~~~
                             %c
                                                           ^
main.c(63,40) :  warning: format specifies type 'char *' but the argument has
      type 'char' [-Wformat]
        printf("%s\n%s\n%d\n%d\n%s\n", p->name, p->sex, p->phone, p->QQ...
                ~~                     ^~~~~~~
                %c
main.c(63,49) :  warning: format specifies type 'char *' but the argument has
      type 'char' [-Wformat]
        printf("%s\n%s\n%d\n%d\n%s\n", p->name, p->sex, p->phone, p->QQ...
                    ~~                          ^~~~~~
                    %c
main.c(63,74) :  warning: format specifies type 'char *' but the argument has
      type 'char' [-Wformat]
  ...%s\n", p->name, p->sex, p->phone, p->QQ, p->address);
     ~~                                       ^~~~~~~~~~
     %c

Only the Code Tells the Truth             K.I.S.S
2015-04-01 20:59
traveller、z
Rank: 2
等 级:论坛游民
帖 子:49
专家分:34
注 册:2014-12-2
收藏
得分:0 
回复 2楼 longwu9t
就是看不懂下面的

学习!!!
2015-04-03 12:52
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:1 
其实我以前讲过的一个方法,现在不妨再讲一次:写程序,不要一气写那么多再编译运行,写一小段就马上编译,马上运行,确保已经写下去的东西是没有任何编译错误的、运行结果是预期之中的,然后再写下一部分,如此不断反复。这样做的好处,是一旦编译错误,出错的范围肯定是刚写的那一部分中,而且错误信息也不会如此长篇大论把你吓尿,逐个排除也容易得多。

远古时代,上机不方便,程序员才在纸上写代码,然后录入电脑编译和运行,所以那个时代的书和教程,都是如此这般教人的,但时代不同了,现在编程无需这样,马上看到结果、马上排除问题,成本很低,这也是所谓“所见即所得”和“可视化”编程的根本目的所在。“可视化”,其实是可以直观看到结果的意思,不是很多人常说的视窗编程。

授人以渔,不授人以鱼。
2015-04-03 20:37
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:1 
回复 4楼 TonyDeng
我本也想回复楼主的
可是一看
#define NUM 100
就觉着很累

一想 算了 还是不写代码了……

Only the Code Tells the Truth             K.I.S.S
2015-04-03 20:40
traveller、z
Rank: 2
等 级:论坛游民
帖 子:49
专家分:34
注 册:2014-12-2
收藏
得分:0 
回复 4楼 TonyDeng
写程序习惯是不好,改!

学习!!!
2015-04-04 12:36
快速回复:一个简单的只输入和读出的通讯录程序,帮忙看看哪里错了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023181 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved