C语言中什么样的数组需要清空?

比如:#include<stdio.h>#include<string.h>main(){intt;charinput[1010],output[1010],*p,*q;... 比如:#include<stdio.h>
#include<string.h>
main()
{
int t;
char input[1010],output[1010],*p,*q;
while(scanf("%d",&t)!=EOF)
{
getchar();
while(t--)
{
memset(input,'\0',sizeof(input));
gets(input);
p=input;
while(*p!='\0')
{
// memset(output,'\0',sizeof(output));
q=output;
while(*p!='\0'&&*p!=' ')
*(q++)=*(p++);
*q='\0';
printf("%s",strrev(output));
if(*(p++)==' ')
printf(" ");
}
printf("\n");
}
}
return 0;
}
注释的清空数组就可以不要,而没注释的那个清空就不能省
展开
 我来答
海狮2D
推荐于2016-10-13 · TA获得超过3022个赞
知道大有可为答主
回答量:1904
采纳率:55%
帮助的人:1148万
展开全部
你这个问题和清不清空没有关系,你这个是非常非常严重的问题,很多公司要开除的错误。
内存越界!!!!!!!!!!!!!!!!!!!!!!
这个语句是:
if(*(p++)==' ')
注意:*p=0,前面表示字符串已经结束
如果执行到这一句,p已经挪到了'\0'的后面,这个错误足够开除了!
有时候就是Segment fault。

因为不知道要做什么,没办法给你改,程序还需要提高很久!
#include<stdio.h>
#include<string.h>
main() {
int t;
char input[1010],output[1010],*p,*q;
while(scanf("%d",&t)!=EOF) {
getchar();
while(t--) {
gets(input);
p=input;
while(*p!='\0') {
q=output;
do{
*(q++)=*(p++);
} while (*p!='\0'&&*p!=' ');
*q=0;
printf("%s",strrev(output));
if(*p==0) {
break;
}
if(*p==' ') {
printf(" ");
p++;
}
}
printf("\n");
}
}
return 0;
}
更多追问追答
追问
您好,我刚学C,有些东西不太懂,我有个不理解的地方:*p=0,前面表示字符串已经结束,这个我知道,这个时候p++指针就会变成野指针了,但是之后的程序我就不用指针p了啊(虽越界不受控了,但是我不用了啊)?循环之后p又重新赋初值了,不影响啊。
这个程序是要将一段英文每个单词(含标点)的字母倒序输出。
如:输入:I love China!输出:I evol !anihC
我想问的是为什么注释的清空数组就可以不要,而没注释的那个清空就不能省
追答
你把我给你的程序运行一下就好了。
就是因为“野指针”,而且不一定会重新初始化,因为\0后面可能没有\0。
“野指针”是严格的不允许的,你那些措施都不能防止野指针对程序的破坏。

这里以0表示\0,U表示不允许访问,S表示空格,D表示数据。你的程序需要的数据:
输入
3
DDDDSDDDD0UUUUU0
输出:
DDDDSDDDDSUUUUUS

如果memset输入变成
DDDDSDDDD0000000
输出变成
DDDDSDDDDSS(多出来的空格你看不见,实际上还是错误的)

就你的程序而言,只要一开始输入的数字足够大,比如2000,程序一定会崩溃。
百度网友b452582
2012-01-24 · TA获得超过2581个赞
知道小有建树答主
回答量:953
采纳率:100%
帮助的人:399万
展开全部
局部变量的数组,需要设定初值
全局变量的数组,系统自动设定初值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ycsxm
2012-01-24 · TA获得超过3.3万个赞
知道大有可为答主
回答量:1.4万
采纳率:0%
帮助的人:8577万
展开全部
清不清空要看你程序的需要,而不是问别人。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友82b784d45
2012-01-24 · TA获得超过210个赞
知道小有建树答主
回答量:992
采纳率:0%
帮助的人:165万
展开全部
看程序的需要
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
rock_0125
2012-01-24 · 超过11用户采纳过TA的回答
知道答主
回答量:78
采纳率:100%
帮助的人:28.2万
展开全部
把你的问题再描述得详细一些吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式