C语言:字符串输入与输出相关问题

Python08

C语言:字符串输入与输出相关问题,第1张

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>char

str1[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

}