gpt4 book ai didi

c - 将字符串作为输入到字符串指针数组中并显示它们

转载 作者:太空宇宙 更新时间:2023-11-04 00:55:54 24 4
gpt4 key购买 nike

我打算将字符串存储到一个指向字符串的指针数组中,然后按如下方式显示它们:


char *directions[3];
for(i=0;i<3;i++)
scanf("%s",directions[i]);
for(i=0;i<3;i++)
printf("%s",directions[i]);

但是当我运行这段代码时,它给了我段错误,有人可以纠正我吗?

最佳答案

你有一个大小为 3 的字符指针数组。这些指针不指向任何有效内存,您可以在其中存储您正在读取的一些字符串。尝试写入无效内存会调用 UB。在这里,UB 以段错误的形式出现(很可能是因为您正在尝试写入您无法控制的位置)。

首先尝试分配一些内存:假设一个足够大的缓冲区来读取整行(或者您认为您将遇到的最大字符串)。读入,分配一个direction数组成员,然后复制出来,如下:

char *directions[ 3 ];
const MAX_LINE_SIZE = 256;
char line[ MAX_LINE_SIZE ];

for (size_t nstr = 0; nstr < 3; ++nstr) {
if (fgets( line, MAX_LINE_SIZE, stdin ) != NULL) {
directions[ nstr ] = malloc( strlen( line ) );
strcpy( directions[ nstr ], line );
}
printf( "%s\n", directions[ nstr ] );
}

关于c - 将字符串作为输入到字符串指针数组中并显示它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3508686/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com