C语言vs2008中,包含了自己编的头文件却不能使用头文件里的函数
在附加问个问题,程序运行的时候第二个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];
}
}
}