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

在mbugh.h中定义了一个函数,在kjnoi.cpp中include了mbugh.h文件,但却不能用mbugh.h中的函数。
在附加问个问题,程序运行的时候第二个scanf函数运行不了,也就是还没输入呢程序就结束了

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

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

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

    你的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];
  }
 }

}

温馨提示:答案为网友推荐,仅供参考
相似回答