读书人

这个程序是不是有多余部分

发布时间: 2013-07-21 21:55:43 作者: rapoo

这个程序是否有多余部分?
下面这个程序是用getchar吃掉多余部分,我总觉得那个if部分是多余的,直接用while(getchar9)!='\n')不就行了?或者我理解得不对,所以请大家指出。



#include "string.h"

int main(void)
{
char firstname[5];
char lastname[5];
int i;

if(!fgets(firstname, 5, stdin)) return -1;

//i = 0;
//while(firstname[i]!='\n' && firstname[i]!='\0' )
//{
//i++;
//}
i = strlen(firstname) -1;
if(firstname[strlen(firstname) -1] == '\n')
{
firstname[i] = '\0';
}
else
{

while(getchar() != '\n');
//{
//continue;
//}
}
puts(firstname);
if(!fgets(lastname, 5, stdin)) return -1;
puts(lastname);

return 0;
}


[解决办法]
实在看不懂你这程序是什么意思。

你这个程序作用是不是删除掉字符串中的第一个换行符之后的内容?

不明白你这段程序是什么意思:
else
{

while(getchar() != '\n')
{
continue;
}
}

第一个continue可以去掉。
再一个你从标准输入中读几个不是换行符的字符,既没存到变量里也没打印出来,这段程序跟没有是一样的。
-------------------------------------------
至于这段程序:
while(firstname[i]!='\n' && firstname[i]!='\0' )
{
i++;
}
if(firstname[i] == '\n')
{
firstname[i] = '\0';
}

如果你的写程序目地如前所说的一样是删除字符串中第一个换行符之后的字符的话,那么这段程序还行。

不过在firstname[i] = '\0',之前加上i++比较好,不然你就把'\n'给覆盖了。

读书人网 >C语言

热点推荐