【发布时间】:2015-10-18 21:03:15
【问题描述】:
我已经编写了这段代码,它适用于 a?b?c?和 a?b?c?d?但是对于 a?b?c?d?e?它最后给出了一个额外的垃圾值。在 s 的末尾附加了 '\0' 字符,然后为什么以及如何读取该垃圾值。我试图通过在代码之间放置 printf 语句来调试它,但无法解决它。请帮忙。
#include<stdio.h>
void print(char* s,char c[],int l)
{
int i,j=0;
for(i=0;s[i]!='\0';i++)
{
if(s[i]=='?')
{
printf("%c",c[j]);
j++;
}
else
printf("%c",s[i]);
}
printf(", ");
}
void permute(char *s,char c[],int l,int index)
{
if(index==l)
{
print(s,c,l);
return;
}
c[index]='0';
permute(s,c,l,index+1);
c[index]='1';
permute(s,c,l,index+1);
}
int main()
{
char s[10],c[10];
printf("Enter a string.");
scanf("%s",s);
int i,ct=0;
for(i=0;s[i]!='\0';i++)
{
if(s[i]=='?')
ct++;
}
permute(s,c,ct,0);
return 0;
}
我的输出是这样的:-
a0b0c0d0e0♣,a0b0c0d0e1♣,
...等等。
【问题讨论】:
标签: c arrays string recursion scanf