char exp[50];
// printf("Enter the postfix expression :");
// scanf("%s", exp);
当输入为567+*
时,所需的输出如图所示。
我需要在C中分隔输入字符串;怎么做?
输出
5,
5,6,
5,6,7,......
答案 0 :(得分:1)
不确定你想要实现的目标 - 但是你得到了一个双循环:
>>> timeit.timeit('list(filter(lambda x: x%10, range(100)))')
27.73180518404115
>>> timeit.timeit('[i for i in range(100) if i%10 != 0]')
18.659852175973356
>>> timeit.timeit('filter(lambda x: x%10, range(100))')
0.7294546449556947
我假设您通过缓冲区中的字符串以空值终止的方式投保。如果您无法保证,您可能需要检查代替char exp[64];
scanf("%s", exp);
for(char* e = exp; *e; ++e)
{
for(char* ee = exp; ee < e; ++ee)
{
if(ee != exp)
putchar(',');
putchar(*ee);
}
putchar('\n');
}
*e
或e < exp + sizeof(exp)
之类的内容,或将后两者中的一个与e < exp + maxLength
答案 1 :(得分:0)
如果你真的想从原始数组中复制一个字符加一个逗号并在每次添加后打印结果,你可以使用两个数组:
#include <stdio.h>
int main(void)
{
char exp[] = "567+*";
char res[1024]; // Plenty big enough
char c;
char *src = exp;
char *tgt = res;
while ((c = *src++) != '\0')
{
*tgt++ = c;
*tgt++ = ',';
*tgt = '\0';
puts(res);
}
return 0;
}