我想问一下我这个为什么不对,我用的是指针数组的写法,我想用一个数组里的元素代表一个指针为字符串
我想问一下我这个为什么不对,我用的是指针数组的写法
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
4条回答 默认 最新
- MarkHan_ 2023-03-13 18:58关注
该回答引用GPTᴼᴾᴱᴺᴬᴵ
您的代码中有几个错误,我会逐个指出并进行解释。第 7 行的 scanf 函数中,应该用 %s 而不是 % 。
在第 10 行中,您定义了一个指针数组 char *p[n] ,但是并没有为其中的每个指针分配空间。因此,在使用 scanf 读取输入时,程序会试图将字符串读入未分配的内存,从而导致错误。为了解决这个问题,您可以使用动态内存分配函数 malloc 为每个指针分配空间,例如:
for (i = 0; i < n; i++) { p[i] = (char*)malloc(81 * sizeof(char)); // 为每个指针分配 81 字节的空间 scanf("%s", p[i]); // 读取字符串并存储到指针所指向的内存空间 }
3.第 14 行中,您使用了一个未定义的函数 strepy ,我猜测您的意图是将 p[0] 所指向的字符串赋值给 min 。为了实现这个目的,可以使用 strcpy 函数,例如:
strcpy(min, p[0]);
4.第 16 行中,变量 i 的首字母写成了小写字母 o ,应该改为大写字母 O 。
5.在第 17 行和第 20 行中,应该将大于号和小于号之间的双引号改为单引号。此外,第 18 行中的空语句应该删除,否则程序会出现逻辑错误。最终的代码应该是这样的:
for (i = 0; i < n; i++) { if (strcmp(min, p[i]) > 0) { strcpy(min, p[i]); } }
6.第 22 行中,您使用了一个未定义的函数 stropy ,应该改为使用 strcpy 函数。此外,您在输出字符串时没有在格式控制字符串中指定字符串长度,应该改为:
printf("Min is: %s", min);
综上所述,您可以使用以下代码来实现您的需求:
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int n, i; scanf("%d", &n); char *p[n]; for (i = 0; i < n; i++) { p[i] = (char*)malloc(81 * sizeof(char)); scanf("%s", p[i]); } char min[81]; strcpy(min, p[0]); for (i = 1; i < n; i++) { if (strcmp(min, p[i]) > 0) { strcpy(min, p[i]); } } printf("Min is: %s", min); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 用windows做服务的同志有吗
- ¥60 求一个简单的网页(标签-安全|关键词-上传)
- ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
- ¥15 基于卷积神经网络的声纹识别
- ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
- ¥100 为什么这个恒流源电路不能恒流?
- ¥15 有偿求跨组件数据流路径图
- ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
- ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
- ¥15 一直显示正在等待HID—ISP