字符中的行提取

问题描述 投票:0回答:1

嗨,我正在尝试编写一个递归函数来提取字符串的每一行。我不知道为什么它不起作用,我花了 2 个小时试图找到问题。

#include <string.h>
#include <stdlib.h>
#include <stdio.h>

int safe_line(char* input, int end_of_line, int num_of_line, int num_sum_safe)
{

    //takes an input, the coordinates of the previous end of the line
    //the number of line already treated
    //and a num_sum_safe which is not important
    
    char temp_line[24];
    int count;
    int actual_line;
    int temp_num_line;
    actual_line = end_of_line;
    temp_num_line = num_of_line + 1;

    if (num_of_line == 3)
    {
        return num_sum_safe;
    }
    
    count = actual_line;

    while (*(input + count) != '\n')
    {   
        *(temp_line + count - actual_line) = *(input + count);
        count++;
    }
    *(temp_line + count - actual_line ) = '\0';
    actual_line += count + 1;

    printf("%s\n", temp_line);

    return safe_line(input, actual_line, temp_num_line, 0);
}

int main()
{
    char input[15] = "n\natt\naa\na as";
    safe_line(input,0 ,0 ,0 );
}

它在标准输出中返回的值:

n

阿特

期望值应该是这样的:

n

阿特

娜作为

c string
1个回答
0
投票

看来问题出在这句话上

actual_line += count + 1;
            ^^

你只需写

actual_line = count + 1;
           ^^^ 

但是函数声明太复杂了。您只能使用指针算术在缓冲区内传递指针,而不是始终传递缓冲区的初始地址和缓冲区中的当前位置。

© www.soinside.com 2019 - 2024. All rights reserved.