[英]printf stops working halfway through my function
我的代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void confab(const char* inText, int nRows, char* outText)
{
int inText_length = 0;
printf("inText 1 = %c\n\n", *inText);
for (; *inText != '\0'; inText_length++){
printf("%d %c\n", inText_length, *inText);
inText++;
}
for (int z = inText_length; inText_length > 1; z--){
inText--;
}
printf("inText 2 = %c\n\n", *inText);
printf("This line doesn't print");
}
int main(void)
{
char buffer[60] = {'\0'};
char* s = "Don't wait until the last day before starting.";
confab(s, 3, buffer);
//printf("%s\n", buffer);
return EXIT_SUCCESS;
}
基本上,我想做的是保持inText不变,并获取主要函数中使用的输入字符串的长度。 (然后,我将使用该长度做更多事情)。所以我要做的是开始两个for循环,以通过增加inText的长度来增加inText的长度,然后再减小它的长度,以使其恢复到原始状态。
但是无论出于什么原因,最后两个printf函数都没有显示。 而且我不能用线
inText - inText_length;
无论出于什么原因,它都说该行什么也不做,所以我尝试用第二个for循环替换它。
谢谢!
当我看这行:
for (int z = inText_length; inText_length > 1; z--){
inText--;
}
我认为您的意思是:
for (int z = inText_length; z > 1; z--){
inText--;
}
而不是使用
inText - inText_length;
你应该使用
inText = inText - inText_length;
要么
inText -= inText_length
首先,为什么不使用strlen ? 实际上,您的函数中存在无限循环:
for (int z = inText_length; inText_length > 1; z--){
inText--;
}
您要递减z,但在条件中使用inText_length
,这里是解决方法:
for (int z = inText_length; z > 1; z--){
inText--;
}
如果您不想使用strlen,则至少应使用另一个指针来避免第二个循环:
char* ptr = inText;
for (; *ptr!= '\0'; inText_length++){
printf("%d %c\n", inText_length, *ptr);
ptr++;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.