(1)用strcat函数
#include <stdioh>
#include <stringh>
int main ()
{
char src[50], dest[50];
strcpy(src, "This is source");
strcpy(dest, "This is destination");
strcat(dest, src);
printf("最终的目标字符串: |%s|", dest);
return(0);
}
(2)不用strcat函数
#include <stdioh>
#include <stringh>
#define N 200
#define M 100
int main(void)
{
char str1[N],str2[M];
int cou1 = 0,cou2 = 0;// 初始化下标
printf("input string1:\n");// 提示输入字符串1
gets(str1);// 输入字符串1
printf("input string2:\n");// 提示输入字符串2
gets(str2);// 输入字符串2
for(cou1 = strlen(str1); str2[cou2] != '\0'; cou2++)
str1[cou1 ++] = str2[cou2];
str1[cou1] = '\0';// 对处理过的字符串加上结束标志'\0',没有'\0'就是字符数组不是字符串
printf("new string is:\n%s\n",str1);// 输出处理过的字符串
return 0;
}
扩展资料:
需要说明的是:
1、一个C语言源程序可以由一个或多个源文件组成。
2、每个源文件可由一个或多个函数组成。
3、一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。是整个程序的入口。
4、源程序中可以有预处理命令(包括include 命令,ifdef、ifndef命令、define命令),预处理命令通常应放在源文件或源程序的最前面。
5、每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“}”之后不能加分号。结构体、联合体、枚举型的声明的“}”后要加“ ;”。
6、标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。
7、通过strlen可以得到字符串的实际长度(不包含’\0’);字符串的结尾是’\0’。
参考资料:
百度百科-c语言
由于不知道你是想测试什么东西,所以只能把一些错误找到!
其余的靠你自己了啊!!
#include <iostream>
#include <cstring>
using namespace std;
struct stringy
{
char str;
int ct;
};
void set(stringy & st,char ps[]);
void show(stringy & st,int n=1);
void show(char ps, int n=1);
int main()
{//不知道你这些是什么功能啊!!!有点乱
stringy beany;
char testing[]="Reality isn't what it used to be";
set(beany,testing);
show(beany);
show(beany,2);
testing[0] = 'D';
testing[1] = 'u';
show(testing);
show(testing,3);
show("Done! " );
return 0;
}
void set(stringy & st,char ps[])
{
int len = strlen(ps);
ststr = new char[len+1]; //因为字符串结尾是有默认的附加'\0',所以多加一个
strcpy(ststr,ps);
cout<<ststr <<endl;//这句就可以看出已经赋值了!!
stct = len;
delete [] ststr; //这里就去掉的话,意思就是把存过去的东西又去掉了!
return;
}
void show(stringy &st,int n)
{
for(int i=0;i<n;i++) //这些for循环语句不知道作用
{
cout << ststr << endl; //这里要加个不然不是只把地址输出了啊!!!
cout << stct << endl;
}
}
void show(char ps, int n)
{
for(int i=0;i<n;i++)
cout << ps << endl;
}
/基本上改完了,功能能够正常实现,删了一些也改了一些函数,就是这样/
#include<stdioh>
#include<stringh>
#include<stdlibh>
//#include<iostreamh>
//学生结构体
struct student
{
long xh;//定义学号
char xm[10];//姓名
float yw,sx,yy;//语文,数学,英语成绩
float zf;//总分
};
struct list
{
struct student stu;/这里必须命名为struct struct student stu/
struct list next;/同上如果要写简洁的话请用typedef下面所有的皆一样/
};
/
定义init函数 为struct list型
作用:对输入的结构体变量增加链表
实际过程中已没用这个函数了,所以也不看了
/
struct list init(struct list L, struct student s)
{
int i;
struct list head,p;/修改了,加了个head,以保存首地址/
head = L;
p=(struct list)malloc(sizeof(struct list));/为链表申请一个新的空间/
p->next =NULL;
p->stuyw = syw;
p->stusx = ssx;
p->stuyy = syy;
p->stuzf = szf;
for(i=0;i<10;i++)
p->stuxm[i] = sxm[i];
p->stuxh = sxh;
head->next=p;/把原来的链表与新链表链接/
return head;/返回首地址/
}
//求链表长度
int length(struct listL)
{
int i=0;
struct list p=L->next;/声明一个结构体变量p使它指向输入的结构体,已经修改。/
while(p!=/L/NULL)/当p没到末尾的时候/
{
i++;/自增/
p=p->next;/指向下一个/
}
return i;
}
//返回总分小于X的位置
int locate(float x,struct list L)
{
int l=length(L);/得到链表的长度/
struct list p = L->next ;/不要在中间定义!/
int i=0;
if(l==0)
return 0;
while(p!=NULL)/当链表没到尾时查找,应该存在的位置/
{
if((p->stu)zf <= x)
break;
i++;
p=p->next;
}
return i;/返回,总分小于x的位置/
}
///并没有用这个函数
int locateS(long id,struct list L)
{
struct list p=L->next ;
int i=0;
while(p!=L)
{
i++;
if((p->stu)xh ==id)
return i;
p=p->next ;
}
return 0;
}/
//放入链表/就是把加入的数往这个L链表里面放/
int insert(struct list s,struct list L)
{
/s是临时结构体,L是链表/
float f = (s->stu)zf;/将f定义为总分/
int n=locate(f,L);/n为链表中f所应该在的位置/
int i=0;
struct list p=L;
struct list tem;
while(i<n)
{
i++;
p=p->next;
}
/和数的交换同理把他们连接的位置进行交换就是,就把他插进去了/
tem=p->next ;
p->next =s ;
s->next =tem;
return 1;
}
//增加学生成绩
int add(struct list L)
{
struct list p=(struct list )malloc(sizeof(struct list));
int okname=1;
int i;
printf("输入学号:");
scanf("%ld",&((p->stu)xh) );
while(okname)/输入名字,若是超过9位永远循环/
{
printf("输入姓名:");
scanf("%s",&((p->stu)xm) );
if(10<strlen((p->stu)xm))
{
printf("名子不能超过9位,请重新输入!\n");
}
else
okname=0;
}
i= strlen((p->stu)xm );
//int i=strlen(q->xm);不能在中间定义!!已经移植函数头
p->stuxm[10]='\0';//最后一位添上0,结束,其实用%s输入了就可以不添了
while(10!=i)
{
(p->stu)xm[i]=' ';
i++;
}
printf("输入语文成绩:");
scanf("%f",&(p->stu)yw);
printf("输入数学成绩:");
scanf("%f",&(p->stu)sx);
printf("输入英语成绩:");
scanf("%f",&(p->stu)yy);
(p->stu)zf = (p->stu)yw + (p->stu)sx + (p->stu)yy;
if(!(insert(p,L)))
printf("输入出错");
return 1;
}
void choice1(struct list L);
void input(struct list L);
void scan(struct list L);
//主函数
int flag=1;
char choice=0;
void main()
{
struct list L;
Lnext = NULL;/注意,要把后面赋值为空,不然后面输出会错误/
choice1(/init(/&L/)/);//
}
//选择函数,没多少讲的
void choice1(struct list L)
{
while(flag)
{
system("cls");
printf("\n\n");
printf("欢迎使用学生成绩排序系统\n");
printf("\n 请选择下列序号。\n");
printf("1输入记录。\n");
printf("2查看排名。\n");
printf("3退出。\n");
scanf("%c",&choice);
switch(choice)
{
case '1':
input(L);
break;
case '2':
scan(L);
break;
case '3':
flag=0;
break;
default:
printf("input err!");
break;
}
}
}
/输入链表,经过的函数->add->insert->locate->length->locate->insert->add->
进行增加链表,基本思想是:先MOLLOC一个空间,存上这一次要添加的成绩,然后,找到总分应该在链表中的位置,最后给他插进去,OK
/
void input(struct list L)
{
system("cls");
printf("\n");
add(L);
printf("按0退出,任意键返回 \n");
scanf("%d",&flag);
}
void scan(struct list L)
{
struct list p=L->next ;//不能从L开始,因为一开始就没用L- -
system("cls");
printf("\n");
//struct list p=L->next ;
while(p!=NULL)//当没在链表尾部时,输出成绩
{
printf("学号:%ld ",(p->stu)xh);
printf("姓名:%s ",(p->stu)xm);
printf("语文:%1f ",(p->stu)yw);
printf("数学:%1f ",(p->stu)sx);
printf("英语:%1f ",(p->stu)yy);
printf("总分:%1f ",(p->stu)zf);
printf("平均分:%1f\n",(p->stu)zf/3);
p=p->next ;//移位至下一个
}
printf("按0退出,任意键返回 \n");
scanf("%d",&flag);
}
#include <stdioh>
#include <stdlibh>
#include <stringh>
int test(const char str)
{
int length, i = 0, j = 0;
char pl, pr, tmp, sign = 0;
tmp = str;
length = strlen(str);
for(i = 0; i < length; i++){
char c = (str+i);
if(c == '+'|| c == '-' || c == '' || c == '/' || c == '%'){
sign = c;
break;
}
}
(tmp + i) = '\0';
pl = tmp;
pr = tmp+i+1;
i = atoi(pl);
j = atoi(pr);
if(sign == '+')
return i+j;
else if(sign == '-')
return i-j;
else if(sign == '')
return ij;
else if(sign == '/')
return i/j;
else
return i%j;
}
int main(void)
{
char str[10] = {0};
scanf("%s", &str);
printf("%d\n",test(str));
return 0;
}
简单写了点,很多容错没做,空格,字母什么的都没有判断,不过简单思路就这样,用解释型语言写简单点,python就很好写
以上就是关于编一个程序,将两个字符串连接起来,(1)用strcat函数(2)不用strcat函数。全部的内容,包括:编一个程序,将两个字符串连接起来,(1)用strcat函数(2)不用strcat函数。、请各位C++高手帮忙修改一下下面的源代码,谢谢!、帮忙给下面的源程序注释,谢谢了等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)