c-为什么在打印字符串时出现分段故障(核心转储)



为什么我的代码出现Segmentation错误(核心转储(,我检查了所有可能的测试用例。

Input: aaabbcc Output:abc

Input: abbcccccc Output:abc

它将只打印未重复的字符。

#include <stdio.h>
void main()
{
char a[100],c=0;
int i;
scanf("%s",a);
for(i=0;a[i]!="";i++)
{
if(a[i]!=a[i+1])
printf("%c",a[i]);
}
}

您的for循环条件是错误的a[i]!=""应该是a[i]!='',您需要查找''终止,并且""是字符串(char *(。理想情况下,如果有适当的警告,您应该得到编译警告。

for(i=0;a[i] != '';i++) 
{
if(a[i]!=a[i+1])
printf("%c",a[i]);
}

事实上,一个更好的for循环是防止数组大小越界,例如,考虑一个输入长度超过100个字符的的情况

for(i=0; (a[i] != '' ) && ( i < (sizeof a) );i++)
{
if(a[i]!=a[i+1])
printf("%c",a[i]);
}

相关内容

  • 没有找到相关文章

最新更新