| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 755 人关注过本帖
标题:问几个基础的问题
只看楼主 加入收藏
hjay12345
Rank: 1
等 级:新手上路
帖 子:20
专家分:5
注 册:2009-6-14
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:11 
问几个基础的问题
有些基础的概念没搞清楚,希望大家知道的解释一下

1 main函数前面有时加上void,有时 int,还有时什么都没有,有什么区别啊?再说这是返回类型,到底返回的是什么,有返回给谁了?
2 main函数的参数有什么作用啊?怎么赋值啊?
3 getch()函数有什么作用?经常看见有的程序结尾有这一句
4 fread函数是按数据块长度来输出数据,但是如我有两个字符串连接在一起,它怎么区分到底哪个该属于哪个?
搜索更多相关主题的帖子: 基础 
2009-08-30 21:21
linoon
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2009-5-3
收藏
得分:0 
我来回答第一个问题吧
void 代表无返回值
int  代表有返回值
就像这个  return 0
2009-08-30 21:27
linoon
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2009-5-3
收藏
得分:0 
那个返回值给谁 我也不知道 不过 好像在程序中不写返回值编译不过去
2009-08-30 21:29
西园竹
Rank: 5Rank: 5
等 级:职业侠客
帖 子:41
专家分:305
注 册:2009-8-8
收藏
得分:5 
1、建议用int,返回给操作系统
2、程序入口参数,比如命令行下的copy相当于一个程序,你后面的输入就是参数
3、让你看到程序的输出
4、不明白你的题目
2009-08-30 21:30
hjay12345
Rank: 1
等 级:新手上路
帖 子:20
专家分:5
注 册:2009-6-14
收藏
得分:0 
1 返回给操作系统什么东西?
4 比如 name[]="aaa" s[]="bbb"那在文件中的存储形式不就是aaabbb嘛,现在我用fread函数来输出给name和s  那该怎么分配?不可能name是aaab s是bb吗?
2009-08-30 21:42
西园竹
Rank: 5Rank: 5
等 级:职业侠客
帖 子:41
专家分:305
注 册:2009-8-8
收藏
得分:5 
以下是引用hjay12345在2009-8-30 21:42的发言:
1 返回给操作系统什么东西?
4 比如 name[]="aaa" s[]="bbb"那在文件中的存储形式不就是aaabbb嘛,现在我用fread函数来输出给name和s  那该怎么分配?不可能name是aaab s是bb吗?
1、告诉系统这个程序结束的原因
2、读程序不知道,因此文件需要格式
2009-08-30 22:06
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分:5 
我说下fread函数,如一个文本文件“001.txt”里面存的是: “aaabbb”(不含双引号)
fread(数组名,字节数,读几次,文件指针名);
程序代码:
# include <stdio.h>
main()
{
 FILE *fp;
 char name[4]="",s[4]="";
 if((fp=fopen("d:\\001.txt","r"))==NULL)
   {printf("error!\n");exit(1);}
 fread(name,3,1,fp);
 fread(s,3,1,fp);
 printf("%s\n%s\n\n",name,s);
 fclose(fp);
 getch();   /*这里你也看到getch函数的用处,它在这里任务是暂停,按任意键程序结束*/
}
运行完数组name="aaa",s="bbb".
输出:
aaa
bbb

[ 本帖最后由 UserYuH 于 2009-8-30 22:58 编辑 ]

努力—前进—变老—退休—入土
2009-08-30 22:51
soler
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:181
专家分:1077
注 册:2005-7-16
收藏
得分:5 
以下是引用hjay12345在2009-8-30 21:21的发言:
2 main函数的参数有什么作用啊?怎么赋值啊?
回答这个问题吧,刚看书看到。。。
int main(int argc, char *argv[])
argc表示参数个数,argv[]里面装的是参数名字(指针)。
// reducto.c 压缩文件为其大小1/3
#include<stdio.h>
#include<stdlib.h>
int main(int argc, char *argv[])
{
    FILE *fp, *fo;
    int ch;
    char name[30];
    int count = 0;
    if(argc < 2)
    {
        fprintf(stderr, "usage:%s filename\n", argv[0]);
        exit(1);
    }
    if((fp = fopen(argv[1], "r")) == NULL)
    {
        fprintf(stderr, "Cannot open the file %s \n",argv[1]);
        exit(1);
    }
    strcpy(name, argv[1]);
    strcat(name, ".red");
    if((fo = fopen(name, "w+")) == NULL)
    {
        fprintf(stderr, "Cannot creat the output file.\n");
        exit(1);   
    }
    while((ch = getc(fp)) != EOF)
        if(count++ % 3 == 0)
            putc(ch, fo);
    fclose(fp);
    fclose(fo);
    return 0;
}
就结合上面这个例子来说明一下,例子大概意思是打开一个文件,然后把里面的数据,3字符选1字符进行文本压缩,然后输出为同名文件,后缀.red
如果你在命令提示符下输入:(假设你的file1.txt在c盘根目录下)
c:> reducto file1.txt
程序会为你自动产生file1.txt.red文件,并且内容为原来的1/3.
argc表示参数的个数为2,第一个为reducto,第二个为file1.txt
相应地,argv[0] == reducto, argv[1] == file1.txt
2009-08-31 08:38
hjay12345
Rank: 1
等 级:新手上路
帖 子:20
专家分:5
注 册:2009-6-14
收藏
得分:0 
回复 7楼 UserYuH
那如果我按一个结构来读取数据,那个结构中恰好有两个在一起的字符数组,那该怎么办?
2009-08-31 20:28
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分:0 
如你存入的是一个结构,读出来也是一个结构,字节一样,不会乱的。
这不同于你说的那样输入一堆字符,然后再分组,

努力—前进—变老—退休—入土
2009-09-01 10:02
快速回复:问几个基础的问题
数据加载中...
 
   



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

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