getchar和putchar都是对字符操作的,而不是字符串,所以需要设计循环为字符串中每一个字符赋值。
以下是示例代码,需要说明的一点是gets输入字符串对于字符串长度没有限制,可能导致越界溢出,不安全,建议改用fgets,另外在新的微软标准中gets函数已被gets_s函数代替,希望对你有帮助。
include<stdio.h>intmain(){ const int count=21
charstr1[count]charstr2[count]charchprintf("请str1输入字符串(getchar方式):\n")int i=0while((ch=getchar())!'\n'){ str1[i]=chi+if(i=count-1){ str1[count-1]='\0'break} }
str1[i+]='\0'printf("下面输出str1(putchar方式):\n")int j=0while(str1[j]!'\0'){putchar(str1[j])j+}/printf
("请str1输入字符串(gets方式):\n")gets(str2)printf("下面输出str1(puts方式):\n")puts(str2)return0}
1.#include"stdio.hmain(){charcint letters=0,space=0,digit=0,others=0printf("pleaseinputsome characters\n")while((c=getchar())!'\n'){
if(c>='a'&c|c>='A'&c)
letters+else if(c=' ')space+else if(c>='0'&c)
digit+else
others+}printf("all in all:char=dspace=d digit=d others=d\n",letters,space,digit,others)}
2.#include"stdio.hmain()
{
int a,n,count=1long int sn=0,tn=0printf("pleaseinputa and n\n")scanf("%d,%d",&a,&n)printf("a=d,n=d\n",a,n)while(count)
{
tn=tn+asn=sn+tna=a*10count}printf("a+aa+.=ld\n",sn)}
3.#include"stdio.hmain()
{
int a[11]={1,4,6,9,13,16,19,28,40,100}inttemp1,temp2,number,end,i,jprintf("originalarrayis:\n")for(i=0ii+)printf("%5d",a[i])printf("\n")printf("inserta newnumber:")scanf("%d",&number)end=a[9]if(number>end)
a[10]=numberelse
{for(i=0ii+){ if(a[i]>number){temp1=a[i]a[i]=numberfor(j=i+1jj+){temp2=a[j]a[j]=temp1temp1=temp2}
break}
}
}
for(i=0ii+)printf("%6d",a[i])}
#include<stdio.h>charstr1[100],str2[100]char
*mystrcat(char
*s,char
*ct)
//字符串连接
{
while(*(s++))
s--
while(*ct)
*(s++)
=
*(ct++)
return
s
}char
*mystrcpy(char
*s,char
*ct)
{
while(*(s++)=*ct,*(ct++))
return
s
}int
mystrcmp(char
*s,char
*ct)
{
while(*s
&&
*ct)
{
if(*(s++)
==
*(ct++))
continue
else
return
*(s-1)-*(ct-1)
}
return
0
}int
mystrlen(char
*s)
{
int
length
=
0
while((length++,*s++))
return
length-1
}char
*mystrsort(char
*s)
{
int
i,j,length
=
mystrlen(s)
char
t
for(i
=
0i
<
lengthi++)
for(j
=
0j
<
length-i-1j++)
{
if(s[j]
>
s[j+1])
{
t
=s[j]
s[j]
=
s[j+1]
s[j+1]
=
t
}
}
return
s
}int
mystrfind(char
*s,char
ch)
{
int
index
=
0
while(*s)
if(index++,*s
==
ch)
return
index
return
-1
}void
menu()
{
int
choose
=
1
char
ch
while(choose
!=
0)
{
printf("\n1.字符串连接\n2.拷贝\n3.比较\n4.求字符串长度\n5.对字符串内字符进行排序\n6.查找字符串中某个字符是否存在\n0.退出\n")
scanf("%d",&choose)
switch(choose)
{
case
1:printf("输入2字符串:\n")
scanf("%s%s",str1,str2)
mystrcat(str1,str2)
printf("连接后的字符串:%s\n",str1)
break
case
2:printf("输入要拷贝的字符串:\n")
scanf("%s",str2)
mystrcpy(str1,str2)
printf("拷贝的字符串:%s\n",str1)
break
case
3:printf("输入要比较的2字符串:\n")
scanf("%s%s",str1,str2)
printf("%d\n",mystrcmp(str1,str2))
break
case
4:
printf("输入要求长度的字符串:\n")
scanf("%s",str1)
printf("长度为:%d\n",mystrlen(str1))
break
case
5:
printf("输入要求排序的字符串:\n")
scanf("%s",str1)
mystrsort(str1)
printf("排序后:%s\n",str1)
break
case
6:printf("输出字符串:\n")
scanf("%s",str1)
printf("输入要查找的字符:\n")
scanf("%c",&ch)
scanf("%c",&ch)
printf("ch所在位置为%d\n",mystrfind(str1,ch))
}
}
}int
main()
{
menu()
return
0
}