Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C中打印字符串中的其他字符?_C_String - Fatal编程技术网

如何在C中打印字符串中的其他字符?

如何在C中打印字符串中的其他字符?,c,string,C,String,用C语言从字符串中每隔一个字符打印一次的最简单方法?我已经尝试使用 int main (void) for(int i = 0; i < strlen(input); i+=2) { word[i] += input[i]; } int main(无效) 对于(int i=0;i

用C语言从字符串中每隔一个字符打印一次的最简单方法?我已经尝试使用

int main (void) 


for(int i = 0; i < strlen(input); i+=2)
{
    word[i] += input[i];
}
int main(无效)
对于(int i=0;i
为什么不在循环中打印它呢

for(int i = 0; i < strlen(input); i+=2)
{
    putchar(input[i]);
}
输出:

hlowrd

2nd option
hlowrd

将strlen(p)移出循环,否则每次迭代都会一次又一次地调用它。你有其他语言的背景,不是吗?我建议,例如通过以下步骤:1)在C中查找HelloWorld并使其运行2)将其更改为逐字符打印。3) 更改为将位置增加2,而不是1@phuclv理论上是的。在过去,编译器就是这么做的。现在,编译器应该能够分辨出,
输入
没有被循环更改,循环中没有指针是别名,因此编译器只需要对strlen表达式求值一次。@Lundin否,并且仍然在每次调用时再次调用该函数loop@Lundin,这仅适用于某些已知函数。否则编译器无法知道返回值是否会在每次迭代中更改。值得注意的是,目标字符串大小限制为32字节,这意味着大于63个字符的输入缓冲区将使程序崩溃。还要注意,strlen(p)在每个for循环中都被计算,实际上是常数。因此,最好在for循环之前获取该值,并将其用作常量。
hlowrd

2nd option
hlowrd