全都没有问题(一)

2023-12-15 13:36:58

字符指针与字符数组的区别与关系

EOF使用指北,南辕北辙!

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct LNode{
	char name[20];
	struct LNode *next;
}LNode,*LinkList;

int main() {
	char str1[20];
	char* name=str1;				//指针及时初始其指向,否则其指向未知导致程序出错
	char str2[20] = "name";
	strcpy(name, str2);				//深拷贝,与name=str2的浅拷贝相比,是拷贝内容而非str2的地址
	printf("%s\n", name);
	
	/*用scanf的本质操作对象是写入字符数组,如果格式化字符串后是字符指针,需要先让它指向一个字符数组(尽量别用为初始化后的指针)*/

	char list[20];
	char* temp = list;
	scanf("%s", temp);
	printf("%s", temp);
	
	/*Windows下的Visual Studio表示EOF用三行crtl+Z*/
	/*1.读取数据 2.生成不定数量 3.含有字符串 4.的链表结点 逻辑顺序:
	结点结构体的字符串选用字符数组,不适合字符指针,因为字符指针需要指向相应的字符数组,那不就还是用字符数组
	↓
	生成一个结点
	循环条件用此结点,EOF
	循环体内再生成一个结点,依次互相独立
	*/

	LinkList L;
	L = (LinkList)malloc(sizeof(LNode));
	L->next = NULL;	//看到指针赶紧初始化哈哈

	LinkList s = (LinkList)malloc(sizeof(LNode));
	while (scanf("%s", s->name) != EOF) {
		s->next=L->next;
		L->next = s;
		s = (LinkList)malloc(sizeof(LNode));	//再开一个存储空间
	}

	LinkList p = L;
	while (p->next) {			//遍历验证结果
		p = p->next;
		printf("%s ", p->name);
	}
	//结束了!全都没有问题
	return 0;
}

第三个小块重点试验:

文章来源:https://blog.csdn.net/weixin_73185295/article/details/135013900
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。