C++ C++;程序不';我跑不好

C++ C++;程序不';我跑不好,c++,struct,codeblocks,C++,Struct,Codeblocks,我写了一个笔记程序。它读取一些注释,保存它们,并允许用户删除、选择或更新注释。它正在编译和运行,但运行不正确 我有这个结构: struct List { char title[101]; char text[501]; int cont; struct List* next; };typedef List list; 这些功能包括: List* insert (List *l, char ti[101], char te[501]) { List* n

我写了一个笔记程序。它读取一些注释,保存它们,并允许用户删除、选择或更新注释。它正在编译和运行,但运行不正确

我有这个结构:

struct List {
    char title[101];
    char text[501];
    int cont;
    struct List* next;

};typedef List list;
这些功能包括:

List* insert (List *l, char ti[101], char te[501]) {
    List* new = (List*) malloc(sizeof(List));
    strcpy (new -> title, ti);
    strcpy (new -> text, te);
    new -> next = l;
    new -> cont = id;
    id++;
    return (new);
}

List* delete (List* l, int v) {
   List *ant = NULL;
   List *p = l;

   while (p != NULL && p -> cont != v) {
      ant = p;
      p = p -> next;
   }
   if (p == NULL)
      return l;
   if (ant == NULL)
      l = p -> next;
   else
        ant -> next = p -> next;
   free(p);
   return l;
}

void print (List *l) {
    List *p;
    for (p = l; p != NULL; p = p -> next){
      cout << "\nTitle: " << p -> title << "\n";
      cout << "Text: " << p -> text <<  "\n";
      cout << "Code: " << p -> cont << "\n" << "\n";
    }
}

注意:我重写了您的代码,不进行翻译,因此现在
delete
是一个名为
deleteItem
的有效函数

你眼前的问题是:

char v;
//...
cin >> v;
L1 = deleteItem(L1, v);  // <-- v is a char, 
当您应该传递int时,您正在将
char
变量传递给
deleteItem
。请将
v
的类型更改为
int

发生的情况是您的
char
正在被转换为int。因此,如果您输入
1
,这将作为49发送,因为
1
的ASCII值是49


<> > C++允许你做的一件事就是声明变量接近它们的使用点。如果你已经声明了<代码> v>代码>更接近于<>代码> DeleTeIt< /Cult>函数调用,你可能已经发现了错误。

请举例说明你的代码做了什么错误。为什么你在C++程序中使用新的变量名?为什么你在C++程序中使用Malc而不是NeXT呢?它只是不删除注释,如果我插入一个注释并调用我插入的注释的删除,并打印结果,我的列表中还有一个注释。我认为你是用C语言编译的,而不是C++。否则它将无法编译。@laurisvr可能需要注意的是,在发布到code ReviewMg之前,代码必须正确运行,我以前没有注意到它,这是对另一个函数的测试,我忘记了将其更改回去,非常感谢,现在它可以正常工作了:D
char v;
//...
cin >> v;
L1 = deleteItem(L1, v);  // <-- v is a char, 
List* deleteItem (List* l, int v) {