作者hunkchen2000 (我没钱)
看板C_and_CPP
标题[问题]请问C语言二为动态阵列输入字串
时间Sun Sep 25 13:20:05 2016
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,j;
char k[10];
char **ptr = (char **) malloc(2 * sizeof(char *));
for (i=0;i<3;i++)
{
ptr[i]=(char*)malloc(3 * sizeof(char));
}
//---------------以上适配置二为记忆体-----------------------//
for(int i=0;i<2;i++)
{
for(int j=0;j<3;j++)
{
printf("Enter string\n");
fgets(k,1000,stdin);
ptr[i][j]=*k;
printf("ptr[%d][%d] is %s\n", i,j ,*k);
}
}
for(int x=0;x<2;x++)
{
for(int y=0;y<3;y++)
{
printf("ptr[%d][%d]=%s\n", i , j , ptr[x][y]);
}
}
//回收ptr阵列的第二维记忆体
for (i=0;i<2;i++)
{
free(ptr[i]);
}
free(ptr); //回收ptr阵列的第一维记忆体 system("pause");
return 0;
}
请问我建立了一个二维的动态阵列2*3我想要手动输入
六个字串
但是程式执行结果错误一堆
请问我该怎麽样改这个程式让他可以
在六个格子里面手动输入六个字串
我需要改成3维动态阵列吗????
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
问题(Question):
喂入的资料(Input):
预期的正确结果(Expected Output):
错误结果(Wrong Output):
程式码(Code):(请善用置底文网页, 记得排版)
补充说明(Supplement):
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 122.116.220.174
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1474780808.A.F65.html
1F:→ ilikekotomi: printf用了%s应该是会印到阵列出现\0 09/25 13:35
2F:→ ilikekotomi: 虽然不知道原本用途 但改用%c应该比较符合你的逻辑 09/25 13:37
3F:→ EdisonX: 应该会先 crash ?? 第一个 for 应该到 2 09/25 13:40
4F:→ ilikekotomi: 搞错你意思 原来是要6个字串 09/25 13:41
5F:→ ilikekotomi: 由於每次你都是存到k这个阵列 所以会错掉 09/25 13:43
6F:→ ilikekotomi: 如果你印是要用阵列的话却时要3维没错 09/25 13:44
7F:→ ilikekotomi: 然後prt[i][j] = (char*)malloc(10*sizeof(char)) 09/25 13:45
8F:→ ilikekotomi: 将ptr[i][j]初始化後 用strcpy从k复制到ptr[i][j] 09/25 13:47
9F:→ ilikekotomi: 但建议你不要用到那麽多 或是改用C++的string 09/25 13:48
10F:→ ilikekotomi: 应该是没什麽必要弄成2*3阵列的字串才对 09/25 13:48
11F:→ ilikekotomi: 建议你进一步厘清pointer和字串的观念来写会比较好 09/25 13:49
12F:→ pttworld: 1000和3的关系是。。? 09/25 14:23