求大师解答,谢
最近开始学习字符串与指针常量等译相关的知识,总感觉听不懂,有的编程题看命白了,但是让自己去编写时又是另一回事。如下面的这个小编程题:输入一个不超过80个字符的字符串,将其中所有的字符“¥”换成s。
#include<stdio.h>
void main()
{ char str[80];
int i=0;
printf("input:")
scanf("%s",str);
for(i=0;i<80;i++)
{if(str[i]!='\0')
if(str[i]=='$')
str[i]='S';
}
puts(str);
}
总感觉这样作应该是对的,但是一运行就错了。求大师帮忙解答,哪个地方错了,应该如何修改。谢谢
[解决办法]
要检查str字符串长度,防止溢出
[解决办法]
大概是你的字符数组输入完毕之后没有‘\0’, puts打印溢出。
[解决办法]
断点调试,想想原因
[解决办法]
scanf("%79s",str);