printf在我的函数中途停止工作

时间:2015-08-10 08:12:30

标签: c

我的代码如下:

#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保持为常量并获取main函数中使用的输入字符串的长度。 (然后我将使用该长度做更多的事情)所以我所做的就是开始两个for循环来通过递增来获得inText的长度,然后递减它以使它恢复到原始状态。

但无论出于何种原因,最后两个printf函数都没有显示出来。 另外,我不能使用

inText - inText_length;

无论出于何种原因,它说该行没有做任何事情,所以我试图用第二个for循环替换它。

谢谢!

2 个答案:

答案 0 :(得分:2)

当我看到这一行时:

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

答案 1 :(得分:1)

首先,你为什么不使用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++;
}