我正在编写一个程序,它将字符串添加到列表并打印它(添加循环和按功能打印)但当然出了问题。这个程序正在添加数据,但是当我写“#39; 0'这意味着停止添加,它不想停止。我认为我在add_to_list函数中分配内存时做的很糟糕。我查看了一些主题,但我没有线索应该看起来如何。如果有人告诉我这有什么问题,我会很高兴。 :)有代码:
#include <stdio.h>
#include <stdlib.h>
#define MAX_L 30
typedef struct elem{
char ch[MAX_L];
struct elem *next;
struct elem *prev;
} list_elem;
void add_to_list (list_elem *first, char ch[MAX_L])
{
list_elem *new=(list_elem*)malloc(sizeof(list_elem));
new->ch[MAX_L]=ch;
list_elem *tmp=first;
while (tmp->next!=NULL){
tmp=tmp->next;}
tmp->next=new;
new->prev=tmp;
new->next=NULL;
}
void print_list(list_elem *first)
{
first=first->next;
if(first->ch==NULL)
printf("lista jest pusta!!\n");
while(first->next!=NULL){
printf("%s\n",first->ch);
first=first->next;}
}
int main()
{
list_elem *first=(list_elem*)calloc(1,sizeof(list_elem));
first->prev=NULL;
first->next=NULL;
char a;
char ch[MAX_L];
printf("write ' 0 ' to end program.\n");
printf("write smth to add it to list: \n");
while(ch!='0'){
scanf("%s",&ch);
add_to_list(first,ch);}
print_list(first);
return 0;
}
答案 0 :(得分:0)
您无法分配数组,请尝试这样
strcpy(new->ch, ch);
而不是
new->ch = ch;
答案 1 :(得分:0)
scanf("%s",&ch);
取代scanf("%s",ch);
而ch
取代char array
。while(ch!='0')
。 strcmp
代替ch
,char array
再次使用brew install openssl
CONFIGURE_OPTS=--with-openssl-dir=$(brew --prefix openssl) rbenv install whatever-ruby-version
是List<Tuple<double,double>>
,而不是普通角色。