C语言vs2008中,包含了自己编的头文件却不能使用头文件里的函数

在mbugh.h中定义了一个函数,在kjnoi.cpp中include了mbugh.h文件,但却不能用mbugh.h中的函数。在附加问个问题,程序运行的时候第二个scan... 在mbugh.h中定义了一个函数,在kjnoi.cpp中include了mbugh.h文件,但却不能用mbugh.h中的函数。
在附加问个问题,程序运行的时候第二个scanf函数运行不了,也就是还没输入呢程序就结束了
展开
 我来答
BBRsher
2014-09-08
知道答主
回答量:12
采纳率:0%
帮助的人:19.2万
展开全部

lz没具体描述,我也没编译 感觉你这个程序的问题可能有三个原因:

  1. 重复的.h头文件“stdafx.h” (因为#include指令是可以嵌套的)不注意得话会引起重复定义 (你这个程序要那个头文件没用吧 为什么要加呢。。)

  2. 函数定义,我觉得定义成sc(char a[],char b,int n)比较好  其中n为数组大小,然后在for循环里面加入n的限制,要不你这个循环跳不出来 然后程序会因为尝试访问a[100]出错 (我忘了scanf函数会不会在字符串最后加'\0',加的话这条算没说)

  3. 你的sc函数的字符操作是不会影响main函数里的a数组,改变的只是a的一个副本,你需要用引用或者指针来实现实参形参的双向值传递。

前两条会导致程序报错,最后一条会发现函数不起作用,lz可以参考。

追问
谢谢你的回答,但还是不行啊
而且补充一下,你说的第三条好像不对啊,数组名就是数组第一个元素的地址
追答

额。。。 自己写了下,测了没问题  用引用或指针都可以 下面指针方式(恩 我记错了 我以为对数组操作不能改变原始的)

 

--------------------main.cpp------------------------

#include<iostream>
#include"aa.h"
using namespace std;

void main(){

 char a[100],b;
 cout<<"请输入字符串:"<<endl;
 cin>>a;
 cout<<"请输入欲删除字符:"<<endl;
 cin>>b;
 sc(a,b,100);
 cout<<"返回字符串:"<<endl;
 cout<<a<<endl;

}

 

--------------------aa.h------------------------

void sc(char a[],char b,int n){
 for(int i=0;i<n&&a[i]!='\0';i++){
  if(a[i]==b){
   for(int j=i;j<n&&a[j]!='\0';j++)
    a[j]=a[j+1];
  }
 }

}

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式