#include<stdio.h>
#include<iostream.h>
void main()
{
char a[]="";
char temp;
char*p;
p=a;
cout<<"input string"<<endl;
scanf("%s",a);
int i=0;
while(*(p+i)!='\0')
{
if(*(p+i)<='Z'&&*(p+i)>='A')
;
else*(p+i)=*(p+i)-32;
i++;
}
i=i-1;
for(i;i>=0;i--)
{
printf("%c\t",*(p+i));
}
cout<<'\n'<<"end----";
}
可以麻烦您具体说一下吗?不是很懂
追答char a[]="";
换为:
char a[50];
再试试
解决了 还是想请问一下char a[]="";和char a[50];有什么区别?char a[]=""不是 系统自己分配空间吗?
追答char a[]="";
相当于:
char a[] = {'\0'};
编译器可能给它分配1字符空间,或4字符空间,不会太多。
char a[] =""; 和 char a[50]; 都是在栈中分配内存,栈(局部变量空间)中内存溢出可能会导致其他局部变量被覆盖、甚至函数调用的返回地址被覆盖,程序很可能会挂掉,后果很严重。
局部变量空间是程序自己负责扩展、回收的,上面我说成编译器给它分配也不算错,因为扩展、回收多少个字节是编译器经过计算后设计到程序中的,相关的知识你以后会慢慢明白的。
回答很风趣但是貌似没什么用
追答你连输入都不会还在这写程序真是笑话
我就想说这个
void main()
{
char a[100];
char *p;
p=a;
cout='a'))
p[i]=p[i]-32;
i++;
}
for(j=0;j<i;j++)
{
printf("%c",p[j]);
}
cout<<'\n'<<endl;
}
书都没看就想写出东西来,这话你可能不爱听,不过我就是喜欢说。
PS:另一个回答就是一SB