如果已知一个字符char 数组赋值 char a[]...

C语言数组 输入一个字符串,并将其中的字符’a’用字符串”shu”替代后输出。如输入为”123abcaHello”,_百度知道
C语言数组 输入一个字符串,并将其中的字符’a’用字符串”shu”替代后输出。如输入为”123abcaHello”,
#include &stdio.h&int main(){
int i,j,k,m,n=0;
char a[81],s[4]=&shu&;
printf(&请输入您要输入的字符串长度:&);
scanf(&%d&,&m);
printf(&请输入您要输入的字符串:&);
for(i=0;i&m;i++)
scanf(&%c&,&a[i]);
for(i=0;i&m;i++)
if(a[i]=='a')
for(j=旦珐测貉爻股诧瘫超凯m-1;j&i;j--)
a[j+2]=a[j];
a[j]=s[0];
a[j+1]=s[1];
a[j+2]=s[2];
for(k=0;k&m+n;k++)
printf(&%c&,a[k]);}虽然这个程序写得冗长了点,但我想知道哪里错了在基础上应该怎么改 为什么我输入m=5 a[i]=asdfg 会是shuf
提问者采纳
#include&&stdio.h&int&main(){&int&i,j,k,m,n=0;&&&&char&a[81],s[4]="shu";&&&&printf("请输入您要输入的字符串长度:");&&&&scanf("%d",&m);&&&&printf("请输入您要输入的字符串:");getchar();&&&&//为消除回车键的影响&&&&for(i=0;i&m;i++)&&&&scanf("%c",&a[i]);&&&&for(i=0;i&m;i++)&&&{&&&&&if(a[i]=='a')&&&&&{&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//&n=n+2,&删除了,没什么用&&&&&&&&for(j=m-1;j&i;j--)&&&&//&由j&i改为j&i,表示i之后的都要移动。&&&&&&&&a[j+2]=a[j];&&&&&&&&j=i;&&&&&&&&a[j]=s[0];&&&&&&&&a[j+1]=s[1];&&&&&&&&a[j+2]=s[2];m=m+2;&&&&&&&&&&&&&&&&&&&&//&添加,添加字符后更新字符总数&&&&&}&&&&}&&&&&for(k=0;k&m;k++)&&&&//m+n改为m,m已经表示字符总数&&&&&printf("%c",a[k]);printf("\n");&&&&&&&&&&&&//输出完字符后换行}123abcaHello的结果为:
j&I我一开始改了但最后输出都会少个o,我觉得是getchar的问题,但是“getchar();
//为消除回车键的影响”能具体解释下么,回车为什么会影响 getchar在这里的具体作用是什么,因为刚刚学所以不是很明白?谢谢
输完字符串长度后有一个回车键,回车键是一个特殊的字符,会在第二个scanf中当作一个字符输入,所以输入的字符的有效数量就被占掉一个,最后一个字符不会被读取。所以用getchar()先读取回车键,消除对后续的scanf的影响。
原来是这样懂了懂了!
提问者评价
其他类似问题
按默认排序
其他1条回答
#include &stdio.h&int main(){
int i,j,k=0,m,n=0;
char a[81],s[4]=&shu&;
printf(&qu旦珐测貉爻股诧瘫超凯n:&);
scanf(&%d&,&m);
fflush(stdin);
printf(&string:&);
for(i=0;i&m;i++)
scanf(&%c&,&a[k]);
if(a[k]=='a')
for(j=0;j&3;j++)a[k++]=s[j];
for(j=0;j&k;j++)
printf(&%c&,a[j]);
printf(&\n&);}
c语言数组的相关知识
您可能关注的推广
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁当前位置: >
> char*与unsignedchar*之间的转换问题如果有一个char类型的字符数组p并且长度很长
char*与unsignedchar*之间的转换问题如果有一个char类型的字符数组p并且长度很长
gxd_0528 & at
char* 与 unsigned char* 之间的转换问题如果有一个 char 类型的字符数组p
并且长度 很长,先假定有10000那么
有时候要转化成unsigned char 类型进行 运算,然后 又得 返回到 char的状态。。小弟的问题 是,两种状态 经过长期的 转换,P的里面存储的信息会不会发生改变 ???
P的里面存储的信息不会变。unsigned char和char都是占一个字节.区别就是如果解析最高位的为题.char把最高位当成是符号位。而unsigned char依旧是数据位.
gxdy9527 & &
& & (0)(0)
探讨P的里面存储的信息不会变。unsigned char和char都是占一个字节.区别就是如果解析最高位的为题.char把最高位当成是符号位。而unsigned char依旧是数据位.gxdy9527 & &
& & (0)(0)
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&&&湘教QS2-164&&增值电信业务经营许可证湘B2-当前位置: >
> ,怎么用char *指针操作char字符数组
,怎么用char *指针操作char字符数组
wondersoft & at
请求帮助,如何用char *指针操作char字符数组求一个例子
例如:&char&a[3]={'a','b','c'};
然后定义一个指针char*&p;
我想让这个p移动到a数组字符的最后一个位置,请问该这么写,我知道用for循环,但是实在想不出,邱家达人帮忙
然后再在最后一个字符的位置,追加一个d
如果是已经知道了字符数组的长度就直接用for循环移到最后一位就可以了~
for(p&=&a,&i&=&0;i&$<$2;&i++,&p++);
因为你这个不是字符串,是字符数组,字符串都是以'\0'结尾的,而你这个却不是,所以用'\0'作为结束标识符是不可以的.wonderxiao & &
& & (0)(0)
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&&&湘教QS2-164&&增值电信业务经营许可证湘B2-怎么定义一个字符数组_百度知道
怎么定义一个字符数组
谢谢就是定义一个数组 数组里面有四个字符比如 +
这样的字符
我有更好的答案
按默认排序
-&*&;#include &a[i]&lt.h&i&&+&&quot,&i++) {
cout&lt,&};4,&;&/
for(int i=0; }}谢谢采纳;void main(){ char * a[4]={&quot
第一种:char s[]={&#39;+&#39;,&#39;-&#39;,&#39;*&#39;,&#39;/&#39;}; 第二种char s[]=&+-*/&; 第三种char s[4];s[0]=&#39;+&#39;;s[1]=&#39;-&#39;;s[2]=&#39;*&#39;;s[3]=&#39;/&#39;; 第四种char *s=&+-*/&; 第五种char s[4];strcpy(s,&+-*/&); 第六种char s[4];s[0]=char(43);s[0]=char(45);s[0]=char(42);s[0]=char(47); 还有更多.....
char[] arr = {&#39;+&#39;,&#39;-&#39;,&#39;*&#39;,&#39;/&#39;};
其他类似问题
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁C++中一个字符数组,如何转成字符串啊
C++中一个字符数组,如何转成字符串啊
呃。。。楼上的回答。。好像不在点上
如果字符串是指string类,那可以用下面语句执行
char temp[]="hello ";
string str = string(temp);
如果我答不到点上那请补充下问题咯
str[0]=&s&,str[1]=&i&,str[2]=&n&;已经这么定义了,不能改。怎么弄个字符串st=str[0]+str[1]+str[2]=&sin&
string是一个类(这个应该懂吧。。。数据类型。。。),与char不同,st=str[0]+str[1]+str[2]='sin'是有语法错误的。。。可以直接 string st(str)
将char数组str的首地址传给去,string 的构造函数就会自动把str的内容复制过去。这个时候
st = “sin”;
其他回答 (2)
在定义的时候直接赋,就是这样:char stu[]="good",edu[]="good"; 或者是在后面用循环一个一个的赋:char stu[],edu[]="good";for (i=0;i&4;i++){stu[i]=edu[i];}在定义后再给字符数组赋值的话必须用循环了
str[0]=&s&,str[1]=&i&,str[2]=&n&;已经这么定义了,不能改。怎么弄个字符串st=str[0]+str[1]+str[2]=&sin&
#include&iostream&#include&&string&using&namespace&void&main(){
char&a[10]={&'a','d','g','a','d','g','a','d','g','\0'}; char&b[]="abcdf"; string&str1,str2; str1=a; str2=b; cout&&str1&& cout&&str2&&}
相关知识等待您来回答
编程领域专家}

我要回帖

更多关于 char 数组赋值 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信