C语言 将带有空格的字符串读入列表变量



我这样定义我的列表:

struct student {
char vname[30];    // Vorname
char nname[30];   // Nachname
int mnr;        // Matrikelnummer
char adresse[50]; // Adresse
int pfkur;      // Anzahl der bereits belegten Pflichtkurse
struct student *next; //Zeiger auf Nachfolger
struct student *prev; // Zeiger auf Vorgänger
};
typedef struct student student; 
typedef struct student *pstudent;

现在我在扫描带有空格的字符串时遇到问题,例如"van Helsing"

我将内容扫描到列表中的实现是这样的:

pstudent allocate(void){ 
  pstudent elp;
  elp = (pstudent)malloc(sizeof(*elp));
  if (elp == NULL){printf("ERROR: malloc"); exit(1);}
  elp -> next = NULL;
  return elp;
} /* allocate */
    elp = allocate();
    printf("n Vorname:tt "); scanf("%s", elp -> vname); // Vorname
    printf(" Nachname:tt "); scanf("%s", elp -> nname); //Nachname
    printf(" Matrikelnummer:tt "); scanf("%d",&(elp -> mnr)); 
    printf(" Adresse:tt "); scanf("%s", elp -> adresse); // Adresse
    printf(" Pflichtkurse:tt "); scanf("%d", &(elp -> pfkur)); // 
    elp -> next = studentlist;
    studentlist = elp;

这些只是一个更大项目中的代码片段,所以如果您需要任何上下文,请随时询问,但我认为提供了足够的信息。我也知道缺少一些东西,例如列表的完整连接等等。

我正在寻找一种方法将字符串扫描到带有空格的 vname、nname 和地址中。现在,当我尝试这样做时,整个程序变得非常错误。

提前谢谢你。

尝试使用 scanf("%[^]s", elp -> vname);它将读取字符串到换行符。

你可以

改用gets,如下所示: gets(elp -> vname);

相关内容

  • 没有找到相关文章

最新更新