#include<iostream.h>
#include<string.h>
void main(){
char a[40];
int i=0;
cin.getline(a,40) ;
cout << a;
cout << strlen(a);
cout <<'\n';
while(1){
while(a[i]!=32){
cout << a[i];
i++;
}
cout << i;
i++;
cout <<'\n';
if(a[i]=='\n')
break;
}
}
c++问题请高手指点为什么运行后后先乱码谢啦
答案:5 悬赏:80
解决时间 2021-12-21 03:18
- 提问者网友:优雅ぉ小姐
- 2021-12-20 23:35
最佳答案
- 二级知识专家网友:夢想黑洞
- 2021-12-20 23:46
#include<iostream.h>
#include<string.h>
void main(){
char a[40];
int i=0;
cin.getline(a,40) ;
cout << a;
cout << strlen(a);
cout <<'\n';
while(1) //总体来说这个循环没意义...
{
while(a[i]!='\0'){//'\n'不对的 getline是吸收输入的第一个\n' 把'\n'变成'\0'里面不会有'\n'的
cout << a[i];
i++;
}
cout <<"总共:" <<i;
// i++; //这里再加a[i]可就未知了
cout <<'\n';
if(a[i]=='\0')//'\n'不对的
break;
}
}
#include<string.h>
void main(){
char a[40];
int i=0;
cin.getline(a,40) ;
cout << a;
cout << strlen(a);
cout <<'\n';
while(1) //总体来说这个循环没意义...
{
while(a[i]!='\0'){//'\n'不对的 getline是吸收输入的第一个\n' 把'\n'变成'\0'里面不会有'\n'的
cout << a[i];
i++;
}
cout <<"总共:" <<i;
// i++; //这里再加a[i]可就未知了
cout <<'\n';
if(a[i]=='\0')//'\n'不对的
break;
}
}
全部回答
- 1楼网友:而你却相形见绌
- 2021-12-21 04:39
字符数组的结束符是'/0’,不是'/n';
- 2楼网友:請叫我丶偏執狂
- 2021-12-21 03:08
我暂时保留我的看法!
- 3楼网友:风格单纯
- 2021-12-21 01:48
是你给a分配了40,又由于你输入的内容不足40 剩下的内容就是乱码了,比如你分配了 40 字符的内存但你值输入了20个字符,那20就是乱码
- 4楼网友:错过的是遗憾
- 2021-12-21 00:52
那肯定是莫个变量有问题 比如循环里有莫个变量
第一次运行变量没有改变 第二次等以后都改变了,要每次都赋以同样的值 不然就出现了你上述的之前可以 后来不行……
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯