struct Text{
       int length;
       char *txt;
};
void print(struct Text myTxt)
{
     while ( myTxt.txt < myTxt.txt + myTxt.length )
     {
           printf("%c", ++myTxt.txt);
     }
}
int main()
{
    struct Text myText;
    char test[] = "long long test text";

    myText.length = sizeof (test) / sizeof (char);
    myText.txt = test;

    print(myText);

    gets();
    return 0;
}

我知道打印功能是错误的,但如何修复它。

最佳答案

您的问题是print修改传递给它的结构具体地说,要打印每个字符,您需要递增myTxt.txt,然后打印它您的while循环也不正确:如果myTxt.txt < myTxt.txt + myTxt.length大于零,myTxt.length将始终为真。
你可以这样解决:

void print(struct Text myTxt)
{
     char *txt = myTxt.txt;
     while ( txt < myTxt.txt + myTxt.length )
     {
           printf("%c", *txt++);
     }
}

这将txt设置为myTxt.txt,因此您可以在不修改txt的情况下修改myTxt.txt

关于c - 从C中的结构读取文本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6171106/

10-12 14:50