我正在尝试读取来自用户的多行输入。我下面的代码运行良好,但我的教授只允许我们在switch语句中使用'break‘。下面是我的函数:
void getaddress (char address [ ], int limit)
{
int len = 0;
while(fgets(address+len, limit, stdin))
{
if(strlen(address+len) == 1)
break;
limit = strlen(address);
limit = limit - len;
if(limit <= 0)
break;
}
}发布于 2020-10-03 12:03:26
考虑简单地阅读直到没有空间作为while()循环的第一个测试。
void getaddress(char address[ ], int limit) {
int offset = 0;
while(offset + 1 < limit && fgets(address+offset, limit - offset, stdin)) {
offset += strlen(address + offset);
}
}重要的是,fgets(ptr, size, stdin)中的size位于least 2,以避免出现问题。
发布于 2020-10-03 12:10:08
我认为
limit = strlen(address);//error
len += strlen(address); // correct见下文
void getaddress (char address [ ], int limit)
{
int len = 0;
while(fgets(address+len, limit, stdin) && limit > 0)
{
switch(address[len]){
case '\0': break;
case '\n':case '\r': continue;
default:;
}
len += strlen(address);
limit -= len;
}
}https://stackoverflow.com/questions/64180514
复制相似问题