免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2932 | 回复: 7
打印 上一主题 下一主题

main函数传递参数问题(已解决) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-19 17:38 |只看该作者 |倒序浏览
int main( int argc, char *argv[])
{
        int fd, nread;
        ssize_t len;
        int bitspeed=9600;
        char buff[BUFSIZE];
        char *dev ="/dev/ttyAM1";
        switch (argc){
        //case 3:
        //        strcpy(dev,argv[1]);
        //        bitspeed=(int)argv[2];
        //        break;
        case 2:        
                strcpy(dev,argv[1]);
                break;
        case 1:
                printf("No Argc ,used default value\n  \
                        Port:/dev/ttyAM1 \n  \
                        Speed:9600\n");
                break;
        default:
                printf("Argc Error\n");
                exit(-1);
        }

        fd = OpenDev(dev);
        if (fd>0)
                set_speed(fd,bitspeed);
        else
        {
                printf("Can't Open Serial Port!\n");
                exit(0);
        }
        if (set_Parity(fd,8,1,'N')== FALSE)
        {
                printf("Set Parity Error\n");
                exit(1);
        }
        while(1)
        {
               
                while((nread = read(fd,buff,BUFSIZE))>0)
                {
                        //printf("\nLen %d\n",nread);
                        buff[nread]='\n';
                        //printf("\ns",buff);
                        if( write(STDOUT_FILENO,buff,nread) !=nread )
                                perror("write error");

                }
        }
        //close(fd);
        //exit(0);
}

我编译完了,没有报错,但一执行就出现段错误。我是这样打的
[root@localhost serial]# ./serial /dev/ttyS0
段错误
[root@localhost serial]#

忘高人指点,小弟刚入门,虚心请教!!

[ 本帖最后由 wzj071227 于 2008-8-20 12:28 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-08-19 17:47 |只看该作者
strcpy(dev,argv[1]); 有错误。

论坛徽章:
0
3 [报告]
发表于 2008-08-19 17:49 |只看该作者
我也想是这个有错误,可以就是不知道怎么改啊 ,忘给出方法!
我是想在没有参数传入的时候就用默认值,要是有参数传入就用传入的值!!我这个构思有错误吗??

[ 本帖最后由 wzj071227 于 2008-8-19 17:51 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2008-08-19 17:54 |只看该作者

回复 #3 wzj071227 的帖子

这个是C语言指针的问题。

论坛徽章:
0
5 [报告]
发表于 2008-08-19 18:06 |只看该作者

回复 #4 rodgerluo 的帖子

说具体操作可以吗??谢谢!!

论坛徽章:
0
6 [报告]
发表于 2008-08-19 18:11 |只看该作者

回复 #5 wzj071227 的帖子

改为数组就可以了 。

论坛徽章:
0
7 [报告]
发表于 2008-08-19 19:38 |只看该作者
char *dev ="/dev/ttyAM1"该指针指向的是常量字符串,其内容不能改变的
建议先把C语法基础学好

评分

参与人数 1可用积分 +15 收起 理由
bitmilong + 15 鼓励回贴

查看全部评分

论坛徽章:
0
8 [报告]
发表于 2008-08-19 20:44 |只看该作者
非产感谢以上两位的指点啊 ,多谢多谢!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP