假设我们使用值bool
初始化了0
变量。此变量将在循环中使用,并在满足某个条件后变为1。
一旦它获得值1,它就变得多余了,所以有没有办法在循环中跳过它进行优化?
我的代码:
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
int main(void)
{
bool var = 0;
char str[] = " Hello babz what's up with you?!";
size_t n, len = strlen(str);
for (n = 0; n < len; n++) {
if (str[n] != ' ') {
var = 1;
}
if (var) {
printf("%c", str[n]);
}
}
putchar('\n');
return 0;
}
答案 0 :(得分:5)
一旦检测到条件就退出循环并转到第二个循环
bool var = 0;
char str[] = " Hello babz what's up with you?!";
size_t n, len = strlen(str);
for (n = 0; n < len; n++) {
if (str[n] != ' ') {
var = 1;
break;
}
}
for (; n < len; n++) {
printf("%c", str[n]);
}
putchar('\n');
return 0;
当然你可以得到更多惯用的
char *p = str;
while(*p && *p==' ') p++;
puts(p);
答案 1 :(得分:1)
仅在str[n] != ' '
为真时打印代码。 <{1}}不需要。
len
或者使用@Jean Jung和#include <stdio.h>
#include <string.h>
int main(void) {
char str[] = " Hello babz what's up with you?!";
size_t n;
for (n = 0; str[n]; n++) {
if (str[n] != ' ') {
fputs(&str[n], stdout);
break;
}
}
putchar('\n');
return 0;
}
中的指针,它们将附加puts()
。
'\n'
答案 2 :(得分:0)
您也可以使用指针:
char str[] = " Hello babz what's up with you?!";
char *pstr = str;
while (*pstr == ' ') pstr++;
while (*pstr != '\0')
{
printf("%c", *pstr);
pstr++;
}
putchar('\n');