如何重复将文本附加到C中的字符串?

时间:2015-05-05 03:08:12

标签: c append repeat strcat

我正在尝试重复将文件中的一行追加到名为lines的字符串中。当我尝试打印行时,我的代码工作正常,但由于我必须解析信息,我需要存储它。

int main(int argc, char *argv[])
{
    // Check for arguments and file pointer omitted
    FILE *f = fopen(argv[1], "r");
    char *times;
    int i = 0;

    for (i = 0; i < 2000; i++)
    {
        char line[80];
        if (fgets(line, 80, f) == NULL)
            break;

        //I want every line with the text "</time> to be added to string times
        if(strstr(line, "</time>"))
        {
            times = strcat(times, line);  //This line is my problem
        }
    }

    printf(times);

    fclose(f);
    return 0;
}

1 个答案:

答案 0 :(得分:3)

您的代码无法正常工作,因为您需要为字符串分配空间。您将items声明为char指针,但是您没有指向有效内存,然后strcat()尝试写入它,从而导致未定义的行为。

试试这个

char items[1024];

 items[0] = '\0';

items[0] = '\0';是因为strcat()将在第一个字符串中搜索'\0'字节,并将第二个字符串附加到第二个字符串的末尾。

你应该注意,如果你要连接在一起的字符串太长而不适合items那么问题就会再次发生。

在这种情况下,您需要使用malloc() / realloc()动态分配空间或计算结果字符串的总长度,然后为其分配足够的空间。