该代码在zuo ye程序运行时可以通过,但是我自己输入11位数字并换行用ctrl+z结束时总是会读取到换行符,导致失败,请问怎么解决,或者zuo ye程序结束时为什么不会读到换行符。
#include
int main(){
char s[100];
int i=0;
char c;
int a;
while(c!=EOF)
{
c=getchar();
s[i]=c;
i++;
}
if(s[11]==EOF&&s[10]!=EOF&&s[9]!=EOF&&s[8]!=EOF&&s[7]!=EOF&&s[6]!=EOF&&s[5]!=EOF&&s[4]!=EOF&&s[3]!=EOF&&s[2]!=EOF&&s[1]!=EOF&&s[0]!=EOF)
{
for(a=0;a<11;a++)
{
if(!('0'<=s[a]&&s[a]<='9'))
printf("字符串中存在非数字字符");
if(!('0'<=s[a]&&s[a]<='9'))
break;
}
if(a==11)
{if(s[0]=='1')
{
if((s[1]=='3')|(s[1]=='4')|(s[1]=='5')|(s[1]=='7')|(s[1]=='8'));
else printf("第2位不合法");
}
else printf("第1位不合法");}
}
else
printf("长度不合法");
printf("%d",s[13]);
}
大概改了下,回车作为结束符。
int main()
{
char s[100] = {0};
int i = 0;
char c;
int a;
while ((c = getchar()) != '\n')
{
s[i] = c;
i++;
}
if (i == 11)
{
for (a = 0; a < 11; a++)
{
if ('9' <= s[a] && s[a] <= '0')
{
printf("字符串中存在非数字字符\n");
break;
}
}
if (a == 11)
{
if (s[0] == '1')
{
if (!(s[1] == '3' || s[1] == '4' || s[1] == '5' || s[1] == '7' || s[1] == '8'))
printf("第2位不合法\n");
}
else
printf("第1位不合法\n");
}
}
else
printf("长度不合法");
printf("%s", s);
}