如何用scanf语句为字符指针数组赋值

指针地址是由系统自动分配的,想要自己指定指针地址有两种方法:
一、初始化赋值
例如:

char* p[] = { "Blue","Yellow","Orange","Green","Red","black" };

此种方法很容易理解;
二、使用循环,对每个元素遍历输入:
1.gets()

#include<stdio.h>
int main()
{
	char a[81];
	while (1)
	{
		gets(a);//a是数组名,是地址常量;每次循环后都会改变字符数组存储的字符串;
	}
}

但是,此方法无法对两条及以上字符串元素同时操作;下面的方法可以灵活地使用指针元素;
2.scanf:
先用malloc函数为每一个指针元素分配内存空间;然后用scanf语句输入:

#include<stdio.h>
#include<stdlib.h>//使用malloc和free函数需要使用该文件;
int main()
{
	char p[5];
	int i;
    for (i = 0; i < 5; i++)
    {
        p[i] = (char*)malloc(80);//(char*)将void指针强制转化为char类型指针;
                            //80代表为每一个元素申请80个字节;
        if (p[i] == NULL)
            exit(1);//空指针结束,可理解为固定语句;
        scanf("%s", p[i]);
    }
    for(i=0;i<5;i++)
    {
        puts(p[i]);
        free(p[i]);//使用后释放;
    }
}

C语言教材指针部分有详细讲解;

  • 6
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
包括C程序设计(第四版)的高清扫描版pdf以及与该书配套的学习辅导一书的pdf。 《C程序设计(第四版)》是由谭浩强教授著、清华大学出版社出版的《C程序设计》是一本公认的学习C语言程序设计的经典教材。根据C语言的发展和计算机教学的需要,作者在《C程序设计(第三版)》的基础上进行了修订。本书按照C语言的新标准C 99进行介绍,所有程序都符合C 99的规定,使编写程序更加规范;对C语言和程序设计的基本概念和要点讲解透彻,全面而深入;按照作者提出的“提出问题—解决问题—归纳分析”三部曲进行教学、组织教材;本书的每个例题都按以下几个步骤展开:提出任务—解题思路—编写程序—运行程序—程序分析—有关说明。符合读者认知规律,容易入门与提高。 本书内容先进,体系合理,概念清晰,讲解详尽,降低台阶,分散难点,例题丰富,深入浅出,文字流畅,通俗易懂,是初学者学习C程序设计的理想教材,可作为高等学校各专业的正式教材,也是一本自学的好教材。本书还配有辅助教材《C程序设计(第四版)学习辅导》。 《C程序设计(第四版)学习辅导.pdf》共分4个部分 第1部分是《C程序设计(第四版)》一书的习题和参考解答,包括了该书各章的全部习题,对全部编程习题都给出了参考解答,共计132个程序; 第2部分是深入学习C程序设计,包括预处理指令、位运算和C程序案例; 第3部分是上机指南,详细介绍了Visual C++ 6.0集成环境下编辑、编译、调试和运行程序的方法; 第4部分是上机实验指导,包括程序的调试与测试、实验的目的与要求,并提供了本课程12个实验。 《C程序设计(第四版)》目录: 第1章 程序设计和C语言 1.1 什么是计算机程序 1.2 什么是计算机语言 1.3 C语言的发展及其特点 1.4 最简单的C语言程序 1.4.1 最简单的C语言程序举例 1.4.2 C语言程序的结构 1.5 运行C程序的步骤与方法 1.6 程序设计的任务 习题 第2章 算法——程序的灵魂 2.1 什么是算法 2.2 简单的算法举例 2.3 算法的特性 2.4 怎样表示一个算法 2.4.1 用自然语言表示算法 2.4.2 用流程图表示算法 2.4.3 三种基本结构和改进的流程图 2.4.4 用N?S流程图表示算法 2.4.5 用伪代码表示算法 2.4.6 用计算机语言表示算法 2.5 结构化程序设计方法 习题 第3章 最简单的C程序设计——顺序程序设计 3.1 顺序程序设计举例 3.2 数据的表现形式及其运算 3.2.1 常量和变量 3.2.2 数据类型 3.2.3 整型数据 3.2.4 字符型数据 3.2.5 浮点型数据 3.2.6 怎样确定常量的类型 3.2.7 运算符和表达式 3.3 C语句 3.3.1 C语句的作用和分类 3.3.2 最基本的语句——赋值语句 3.4 数据的输入输出 3.4.1 输入输出举例 3.4.2 有关数据输入输出的概念 3.4.3 用printf函数输出数据 3.4.4 用scanf函数输入数据 3.4.5 字符数据的输入输出 习题 第4章 选择结构程序设计 4.1 选择结构和条件判断 4.2 用if语句实现选择结构 4.2.1 用if语句处理选择结构举例 4.2.2 if语句的一般形式 4.3 关系运算符和关系表达式 4.3.1 关系运算符及其优先次序 4.3.2 关系表达式 4.4 逻辑运算符和逻辑表达式 4.4.1 逻辑运算符及其优先次序 4.4.2 逻辑表达式 4.4.3 逻辑型变量 4.5 条件运算符和条件表达式 4.6 选择结构的嵌套 4.7 用switch语句实现多分支选择结构 4.8 选择结构程序综合举例 习题 第5章 循环结构程序设计 5.1 为什么需要循环控制 5.2 用while语句实现循环 5.3 用do…while语句实现循环 5.4 用for语句实现循环 5.5 循环的嵌套 5.6 几种循环的比较 5.7 改变循环执行的状态 5.7.1 用break语句提前终止循环 5.7.2 用continue语句提前结束本次循环 5.7.3 break语句和continue语句的区别 5.8 循环程序举例 习题 第6章 利用数组处理批量数据 6.1 怎样定义和引用一维数组 6.1.1 怎样定义一维数组 6.1.2 怎样引用一维数组元素 6.1.3 一维数组的初始化 6.1.4 一维数组程序举例 6.2 怎样定义和引用二维数组 6.2.1 怎样定义二维数组 6.2.2 怎样引用二维数组的元素 6.2.3 二维数组的初始化 6.2.4 二维数组程序举例 6.3 字符数组 6.3.1 怎样定义字符数组 6.3.2 字符数组的初始化 6.3.3 怎样引用字符数组中的元素 6.3.4 字符串和字符串结束标志 6.3.5 字符数组的输入输出 6.
第一章 导言 1.1 入门 1.2 变量与算术表达式 1.3 for语句 1.4 符号常量 1.5 字符输入/输出 1.6 数组 1.7 函数 1.8 参数——传值调用 1.9 字符数组 1.10 外部变量与作用域 第二章 类型、运算符与表达式 2.1 变量名 2.2 数据类型与长度 2.3 常量 2.4 声明 2.5 算术运算符 2.6 关系运算符与逻辑运算符 2.7 类型转换 2.8 自增运算符与自减运算符 2.9 按位运算符 2.10 赋值运算符与表达式 2.11 条件表达式 2.12 运算符优先级与求值次序 第三章 流控制 3.1 语句与程序块 3.2 if-else语句 3.3 else-if语句 3.4 switch语句 3.5 while循环与for循环 3.6 do-while循环 3.7 break语句与continue语句 3.8 goto语句与标号 第四章 函数与程序结构 4.1 函数的基本知识 4.2 返回非整数型的函数 4.3 外部变量 4.4 作用域规则 4.5 头文件 4.6 静态变量 4.7 寄存器变量 4.8 程序块结构 4.9 初始化 4.10 递归 4.11 C预处理 第五章 指针与数组 5.1 指针与地址 5.2 指针与函数参数 5.3 指针与数组 5.4 地址算术运算 5.5 字符指针与函数 5.6 指针数组以及指向指针的指针 5.7 多维数组 5.8 指针数组的初始化 5.9 指针与多维数组 5.10 命令行参数 5.11 指向函数的指针 5.12 复杂声明 第六章 结构 6.1 结构的基本知识 6.2 结构与函数 6.3 结构数组 6.4 指向结构的指针 6.5 自引用结构 6.6 表查找 6.7 类型定义(typedef) 6.8 联合 6.9 位字段 第七章 输入与输出 7.1 标准输入/输出 7.2 格式化输出——print函数 7.3 变长参数表 7.4 格式化输入——scanf函数 7.5 文件访问 7.6 错误处理——stderr和exit 7.7 行输入和行输出 7.8 其他函数 第八章 UNIX系统接口 8.1 文件描述符 8.2 低级I/O——read和write 8.3 open、create、close和unlink 8.4 随机访问——lseek 8.5 实例——fopen和getc函数的实现 8.6 实例——目录列表 8.7 实例——存储分配程序 附录 A 参考手册 附录 B 标准库 附录 C 变更小结
“新概念C语言”突破了以往任何一种语言教材的旧的模式,将教学内容分为入门篇和提高篇两个篇章。在入门篇中只引进程序设计必要的语法现象,达到快速入门。激发兴趣的目的。在入门篇和提高篇之间插一个强化上机实验周,巩固学习内容。在提高篇中完成完整的语法、算法、程序设计思想等教学目的的学习任务。由于学生对语言已具有了初步的了解并掌握了最基本的语法和程序设计思想,能设计较简单的程序,所以在提高篇的学习中,不论对灵活语法的学习和掌握,还是对程序设计思想的掌握都更加容易,从而可以较容易达到教学目标。 第一部分 入门篇 1 第1章 C语言的产生及其工作流程 3 1.1 C语言的产生 3 1.2 程序和程序设计 3 1.2.1 C程序 3 1.2.2 程序设计 4 习题 4 第2章 C程序设计的初步知识 5 2.1 简单C程序的构成和格式 5 2.2 常量、变量和标识符 6 2.2.1 标识符 6 2.2.2 常量 7 2.2.3 用定义一个符号名的方法来代表一个常量 7 2.2.4 变量 8 2.3 整型数据 8 2.3.1 整型常量 8 2.3.2 整型变量 8 2.4 实型数据 9 2.4.1 实型常量 9 2.4.2 实型变量 9 2.5 字符型数据 10 2.5.1 字符常量 10 2.5.2 字符串常量 11 2.5.3 字符变量 11 2.6 算术表达式 11 2.6.1 基本的算术运算符 11 2.6.2 运算符的优先级、结合性和算术表达式 12 2.6.3 强制类型转换表达式 13 2.7 赋值表达式 13 2.7.1 赋值运算符和赋值表达式 13 2.7.2 赋值运算中的类型转换 14 习题 15 第3章 顺序结构程序 16 3.1 复合语句和空语句 16 3.1.1 复合语句 16 3.1.2 空语句 16 3.2 程序举例 16 习题 17 第4章 选择结构 19 4.1 关系运算和逻辑运算 19 4.1.1 C语言中的逻辑值 19 4.1.2 关系运算符和关系表达式 19 4.1.3 逻辑运算符和逻辑表达式 20 4.2 if语句和用if语句构成的选择结构 21 习题 22 第5章 循环结构 25 5.1 for语句和用for语句构成的循环结构 25 5.1.1 for语句构成的循环结构 25 5.1.2 for循环的执行过程 25 5.1.3 有关for语句的说明 25 5.2 循环结构的嵌套 27 习题 28 第6章 函数 30 6.1 函数的定义和返回值 30 6.1.1 函数定义的语法 30 6.1.2 函数的返回值 30 6.2 函数的调用 32 6.2.1 函数的调用方式 32 6.2.2 函数调用时的语法要求 32 6.3 函数的说明 33 6.3.1 函数说明的形式 33 6.3.2 函数说明的位置 34 6.4 调用函数和被调用函数之间的数据传递 34 6.5 库函数 36 6.6 数据输入输出及常用库函数 37 6.6.1 printf函数(格式输出函数) 37 6.6.2 scanf函数(格式输入函数) 39 6.6.3 调用putchar和getchar函数输出和输入字符 40 6.7 程序举例 41 习题 43 第7章 数组 45 7.1 一维数组的定义和一维数组元素的引用 45 7.1.1 一维数组的定义 45 7.1.2 一维数组元素的引用 46 7.1.3 一维数组的初始化 46 7.1.4 一维数组的定义和数组元素引用举例 47 7.2 函数之间对一维数组数组元素的引用 47 7.2.1 数组元素做实参 47 7.2.2 数组名做实参 49 7.3 一维数组应用举例 50 7.4 字符数组 53 7.4.1 字符数组的定义 53 7.4.2 字符数组的初始化 54 7.4.3 字符数组的引用 54 7.4.4 字符串与字符串结束标志 55 7.4.5 字符数组的输入输出 56 7.4.6 字符串处理函数 58 7.4.7 字符数组应用举例 60 习题 61 第8章 文件 63 8.1 C语言文件的概念 63 8.2 打开文件 64 8.3 关闭文件 65 8.4 调用getc(fgetc)和putc(fputc)等常用函数进行输入和输出 65 8.5 判断文件结束函数feof 68 习题 69 第二部分 提高篇 71 第9章 算法 73 9.1 算法 73 9.2 结构化程序设计和模块化结构 74 9.2.1 结
C语言程序设计实验报告 专业:计算机科学与技术 班级:计算机科学与技术创新实验班 日期:2011-12-29 成绩: 实验组别: 第 次实验: 指导教师: 学生姓名: 学号: 同组人姓名: 实验名称:指针实验 实验目的 熟练掌握指针的说明、赋值、使用。 掌握用指针引用数组的元素,熟悉指向数组的指针的使用。 熟练掌握字符数组字符串的使用,掌握指针数组字符指针数组的用法。 掌握带有参数的main函数的用法。 实验内容及要求 源程序改错 下面的源程序中是否存在错误?如果存在,原因是什么?如果存在错误要求在计算机上 对这个源程序进行调试修改,是之能够正确执行。 源程序: #include <stdio.h> int main(void) { float * p; scanf("%f",p); printf("%f\n",*p); return 0; } 源程序修改替换 下面源程序的功能是,通过函数指针和菜单选择来调用字符串拷贝函数或字符串连接函 数。请在程序中的下划线处填写合适的表达式、语句或代码片段来完善该程序。 源程序: #include <stdio.h> #include <string.h> int main(void) { ____________________________ char a[80],b[80],c[160],*result=c; int choice,i; do { printf("\t\t1 copy string.\n"); printf("\t\t2 connect string.\n"); printf("\t\t3 exit.\n"); printf("\t\tinput a number(1-3)please! \n"); scanf("%d",&choice); } while(choice<1""choice>5); switch (choice) { case 1: p=strcpy; break; case 2: p=strcat; break; case 3: goto down; } getchar(); printf("input the first string please! \n"); i=0; _______________________ printf("input the second string please!\n"); i=0; _______________________ result=____(a,b); printf("the result is %s\n",result); down: ; return 0; } 请上机运行第(1)题程序使之能按下面要求输出结果(注:(输入)表示该行数据是键 盘数据): copy string。 Connect string。 Exit。 Input a number(1-3)please! 2(输入) Input the first string please! The more you learn,(输入) Input the second string please! The more you get.(输入) The result is the more you learn,the more you get. 跟踪调试程序 请按下面的要求对所给源程序进行操作,并回答问题和排除错误。 单步执行源程序。进入strcpy时,watches窗口中s为何值?返回main时,watches窗口中 s为何值? 排除源程序中的错误,使程序输出结果为:there is a boat on the lake. 源程序: #include <stdio.h> char * strcpy(char*,char*); int main(void) { char a[20],b[60]="there is a boat on the lack."; printf("%s\n",strcpy(a,b)); return 0; } char *strcpy(char*s,char*t) { while(*s++=*t++) ; return (s); } 程序设计 编写并上机调试运行能实现以下功能的程序或函数: 已知一个长整形变量占四个字符,其中每个字节又分高四位和低四位。试编写一个程序 ,从该长整形变量的高字节开始,依次取出每个字节的高四位和低四位并以数字字符的 形式进行显示。 利用大小为n的指针数组指向用gets函数输入的n行,每行不超过80个字符。试编写一个 函数,它将每一行中连续的多个空格字符压缩为一个空格字符。在调用函数中输出压缩 空格后的各行,空行不予输出。 编写一个程序,输入n个整数,排序后输出。排序的原则由命令行可选参数
图书目录编辑 第一章:程序设计和C语言   1.1什么是计算机程序   1.2什么是计算机语言   1.3C语言的发展及其特点   1.4最简单的C语言程序   1.4.1最简单的C语言程序举例   1.4.2C语言程序的结构   1.5运行C程序的步骤与方法   1.6程序设计的任务   习题 第2章:算法——程序的灵魂 2.1什么是算法 2.2简单的算法举例 2.3算法的特性   2.4怎样表示一个算法   2.4.1;用自然语言表示算法 2.4.2用流程图表示算法 2.4.3三种基本结构和改进的流程图   2.4.4用N-S流程图表示算法   2.4.5用伪代码表示算法   2.4.6用计算机语言表示算法   2.5结构化程序设计方法   习题 第3章:简单的C程序设计——顺序程序设计 3.1顺序程序设计举例   3.2数据的表现形式及其运算   3.2.1常量和变量   3.2.2数据类型   3.2.3整型数据   3.2.4字符型数据   3.2.5浮点型数据   3.2.6怎样确定常量的类型   3.2.7运算符和表达式   3.3C语句   3.3.1C语句的作用和分类   3.3.2最基本的语句——赋值语句   3.4数据的输入输出   3.4.1输入输出举例   3.4.2有关数据输入输出的概念   3.4.3用printf函数输出数据   3.4.4用scanf函数输入数据   3.4.5字符数据的输入输出   习题 第4章:选择结构程序设计 4.1选择结构和条件判断   4.2用if语句实现选择结构   4.2.1用if语句处理选择结构举例   4.2.2if语句的一般形式   4.3关系运算符和关系表达式   4.3.1关系运算符及其优先次序   4.3.2关系表达式   4.4逻辑运算符和逻辑表达式   4.4.1逻辑运算符及其优先次序   4.4.2逻辑表达式   4.4.3逻辑型变量   4.5条件运算符和条件表达式   4.6选择结构的嵌套   4.7用switch语句实现多分支选择结构   4.8选择结构程序综合举例   习题 第5章;循环结构程序设计 5.1为什么需要循环控制 5.2用while语句实现循环   5.3用do…while语句实现循环   5.4用for 语句实现循环   5.5循环的嵌套   5.6几种循环的比较   5.7改变循环执行的状态   5.7.1用break语句提前终止循环   5.7.2用continue语句提前结束本次循环   5.7.3break语句和continue语句的区别   5.8循环程序举例   习题 第6章;利用数组处理批量数据 6.1.怎样定义和引用一维数组   6.1.1怎样定义一维数组   6.1.2怎样引用一维数组元素   6.1.3一维数组的初始化   6.1.4一维数组程序举例   6.2.怎样定义和引用二维数组   6.2.1怎样定义二维数组   6.2.2怎样引用二维数组的元素   6.2.3二维数组的初始化   6.2.4二维数组程序举例   6.3.字符数组 6.3.1怎样定义字符数组   6.3.2字符数组的初始化   6.3.3怎样引用字符数组中的元素   6.3.4字符串和字符串结束标志   6.3.5字符数组的输入输出   6.3.6使用字符串处理函数   6.3.7字符数组应用举例   习题 第7章:用函数实现模块化程序设计 7.1为什么要用函数   7.2怎样定义函数   7.2.1为什么要定义函数   7.2.2定义函数的方法   7.3调用函数174   7.3.1函数调用的形式   7.3.2函数调用时的数据传递   7.3.3函数调用的过程   7.3.4函数的返回值   7.4对被调用函数的声明和函数原型   7.5函数的嵌套调用   7.6函数的递归调用   7.7数组作为函数参数   7.7.1数组元素作函数实参   7.7.2数组名作函数参数   7.7.3多维数组名作函数参数   7.8局部变量和全局变量   7.8.1局部变量   7.8.2全局变量   7.9变量的存储方式和生存期   7.9.1动态存储方式与静态存储方式   7.9.2局部变量的存储类别   7.9.3全局变量的存储类别   7.9.4存储类别小结   7.10关于变量的声明和定义   7.11内部函数和外部函数   7.11.1内部函数   7.11.2外部函数   习题 第8章;善于利用指针 8.1指针是什么   8.2指针变量 8.2.1使用指针变量的例子   8.2.2怎样定义指针变量   8.2.3怎样引用指针变量   8.2.4指针变量作为函数参数   8.3通过指针引用数组   8.3.1数组元素的指针   8.3.2在引用数组元素时指针的运算   8.3.3通过指针引用数组元素   8.3.4用数组名作函数参数   8.3.5通过指针引用多维数组   8.4通过指针引用字符串   8.4.1字符串的引用方式   8.4.2字符指针作函数参数   8.4.3使用字符指针变量和字符数组的比较   8.5指向函数的指针   8.5.1什么是函数指针   8.5.2用函数指针变量调用函数   8.5.3怎样定义和使用指向函数的指针变量   8.5.4用指向函数的指针作函数参数   8.6返回指针值的函数   8.7指针数组和多重指针   8.7.1什么是指针数组   8.7.2指向指针数据的指针   8.7.3指针数组作main函数的形参   8.8动态内存分配与指向它的指针变量   8.8.1什么是内存的动态分配   8.8.2怎样建立内存的动态分配   8.8.3void指针类型   8.9有关指针的小结   习题 第9章;用户自己建立数据类型 9.1定义和使用结构体变量   9.1.1自己建立结构体类型   9.1.2定义结构体类型变量   9.1.3结构体变量的初始化和引用   9.2使用结构体数组   9.2.1定义结构体数组   9.2.2结构体数组的应用举例   9.3结构体指针   9.3.1指向结构体变量的指针   9.3.2指向结构体数组的指针   9.3.3用结构体变量和结构体变量的指针作函数参数   9.4用指针处理链表   9.4.1什么是链表   9.4.2建立简单的静态链表   9.4.3建立动态链表   9.4.4输出链表   9.5共用体类型   9.5.1什么是共用体类型   9.5.2引用共用体变量的方式   9.5.3共用体类型数据的特点   9.6使用枚举类型   9.7用typedef声明新类型名   习题 第10章;对文件的输入输出 10.1C文件的有关基本知识   10.1.1什么是文件   10.1.2文件名   10.1.3文件的分类   10.1.4文件缓冲区   10.1.5文件类型指针   10.2打开与关闭文件   10.2.1用fopen函数打开数据文件   10.2.2用fclose函数关闭数据文件   10.3顺序读写数据文件   10.3.1怎样向文件读写字符   10.3.2怎样向文件读写一个字符串   10.3.3用格式化的方式读写文件   10.3.4用二进制方式向文件读写一组数据   10.4随机读写数据文件   10.4.1文件位置标记及其定位   10.4.2随机读写   10.5文件读写的出错检测   习题
### 回答1: 正确答案是d. char *s; s="abcde"; puts(s);。只有d选项中的字符指针s被正确地赋值字符串常量"abcde",并且字符串常量不需要使用大括号或引号转义。其他选项有错误或不确定性。选项a中缺少字符串结束符'\0',选项b可能导致字符串不以'\0'结尾, 选项c需要为字符指针s分配内存空间。 ### 回答2: 正确答案是c. char *s; scanf("%s", s); puts(s); 解析如下: 选项a和b都声明了一个字符数组s,但是在初始化时只分配了5个空间,实际上字符串要占用6个空间(1个空间存放\0),会导致字符数组溢出,结果无法预料。 选项d声明了一个字符指针s,并将s赋值为"abcde",这样的做法有两个问题:一是没有给字符数组分配空间,如果尝试向s指向的内存位置写入数据,会发生不可知的错误;二是字符串"abcde"可能存储在只读内存中,不支持写操作,尝试修改会发生段错误。 选项c是正确答案,声明了一个字符指针s,并通过scanf函数从控制台读取字符串,字符串会被存储在动态内存中,可以任意修改。需要注意的是,使用前必须对s进行内存分配,可以使用malloc函数或者静态声明来分配。例如: char *s = (char*)malloc(sizeof(char) * 6); //分配6个字符空间,用于存放"abcde\0" scanf("%s", s); //从控制台读取字符串 puts(s); //输出字符串 free(s); //释放动态内存 总之,对字符数组的处理必须谨慎,避免发生数组溢出、指针非法访问等错误。动态内存分配可以解决空间不足的问题,但也需要注意内存泄漏、多线程同步等问题,使用时应该根据应用场景综合考虑。 ### 回答3: 正确答案是c. char *s; scanf("%s", s); puts(s);。 在代码段a和b中,数组s的空间已经被初始化为"abcde"或{'a', 'b', 'c', 'd', 'e'},如果我们在执行scanf语句时输入abcde,它们仅会覆盖s中的"a"字符,因此puts(s)函数输出的字符串将不是我们期望的'abcde'。 在代码段d中,我们试图用指针s指向字符串"abcde",但是s仅仅指向了这个字符串所在的内存地址,我们并没有为s分配空间存储它指向的字符串,因此puts(s)函数可能输出一个意想不到的结果或直接导致程序崩溃。 正确的做法是先为字符指针s分配足够的空间,可以使用静态分配或动态分配的方式,然后再利用scanf语句将输入的字符串复制到这个空间中,最后使用puts函数输出这个字符串。因此,代码段c是正确的,它首先声明了一个字符指针s,然后在scanf语句中使用%s格式化字符串输入函数读取输入的字符串,并将其复制到s指向的内存空间中,最后使用puts函数输出这个字符串。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Haclyon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值