C语言里如何把一个字符串存在一个数组里?

C语言里如何把一个字符串存在一个数组里?,第1张

/
C语言中怎么把字符数组里的数据存放到字符串数组中
/
#include
#include
void
main()
{
char
a[
100
],
p,
q;
int
i,
j,
n
=
0;
char
b[
50
];//字符指针数组
printf("Please
input
a
sentence:\n");
gets(
a
);
p
=
a;
while(
p
!=
'\0'
)
{
if(
p
==
'
')
{//跳过空格
p++;
continue;
}
else
{
i
=
0;
while(
(
p
+
i
)
!=
'
'
&&
(
p
+
i
)
!=
'\0'
)
i++;
q
=
new
char[
i
+
1
];//创建一个新的字符数组,存储单词
for(
j
=
0;
j
<
i;
j++
)
q[
j
]
=
p[
j
];
q[
i
]
=
'\0';//记得放上结束符
b[
n++
]
=
q;//用字符数组中的元素指向新创建的字符数组
p
+=
i;
}
}
//以下换行输出,验证是否正确
for(
i
=
0;
i
<
n;
i++
)
printf(
"%s\n",
b[
i
]
);
for(
i
=
0;
i
<
n;
i++
)
delete
[]b[i];//释放各个字符数组
}
//测试:输入
//
sdkjf
skdj
d
//
输出
//
sdkjf
//
skdj
//
d
PS:
或者输入一个完整的英文,如
"
I
am
a
genius!"
也可。程序会自动忽略空格。:-)
用C的malloc和free写起来较长,喜欢用C++中的new和delete

你的a是一个int数组,而%s是字符串打印输出,因此针对你上面的情况没有其他输出办法了,

或则可以改成循环输出

int i = 0;
for (i = 0; i < (sizeof(a) / sizeof(a[0]); i++ ) {
    printf("array index [%d] = %d\n", i, a[i]);
}

举个例子,这里str是一个二维数组,手动输入10个字符串存入该数组,然后用该二维数组的行指针输出\x0d\#include\x0d\#include\x0d\void main()\x0d\{\x0d\ char str[10][20];\x0d\ int i;\x0d\ for(i=0;i回答于 2022-11-16

在C语言中,输入输出字符串有以下两种方式:

1 用scanf/printf输入输出。

scanf/printf是C语言的格式化输入输出函数,可以用于输入输出各种基础类型,字符串(char)也

其支持范围内。

格式化字符为%s。

定义

char str[100];

输入

scanf("%s",str);

输出

printf("%s",str);

2 C语言还支持专门的字符串输入输出函数:gets/puts。
gets的作用为,读入一行输入,并将读到的换行符替换为字符串结束符。
puts的作用为,将字符串单行输出,即输出字符串内容后,会自动在结尾增加换行。
定义

char str[100];

输入

gets(str);

输出

puts(str);

扩展资料:

起初,C语言没有官方标准。1978年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言。布莱恩·柯林汉(Brian Kernighan) 和 丹尼斯·里奇(Dennis Ritchie) 出版了一本书,名叫《The C Programming Language》。

这本书被 C语言开发者们称为K&R,很多年来被当作 C语言的非正式的标准说明。人们称这个版本的 C语言为K&R C。

K&R C主要介绍了以下特色:

结构体(struct)类型

长整数(long int)类型

无符号整数(unsigned int)类型

把运算符=+和=-改为+=和-=。因为=+和=-会使得编译器不知道使用者要处理i = -10还是i =- 10,使得处理上产生混淆。

即使在后来ANSI C标准被提出的许多年后,K&R C仍然是许多编译器的最 准要求,许多老旧的编译器仍然运行K&R C的标准。

1970到80年代,C语言被广泛应用,从大型主机到小型微机,也衍生了C语言的很多不同版本。

1983年,美国国家标准协会(ANSI)成立了一个委员会X3J11,来制定 C语言标准。

1989年,美国国家标准协会(ANSI)通过了C语言标准,被称为ANSI X3159-1989 "Programming Language C"。因为这个标准是1989年通过的,所以一般简称C89标准。有些人也简称ANSI C,因为这个标准是美国国家标准协会(ANSI)发布的。

1990年,国际标准化组织(ISO)和国际电工委员会(IEC)把C89标准定为C语言的国际标准,命名为ISO/IEC 9899:1990 - Programming languages -- C  。

因为此标准是在1990年发布的,所以有些人把简称作C90标准。不过大多数人依然称之为C89标准,因为此标准与ANSI C89标准完全等同。

1994年,国际标准化组织(ISO)和国际电工委员会(IEC)发布了C89标准修订版,名叫ISO/IEC 9899:1990/Cor 1:1994,有些人简称为C94标准。

1995年,国际标准化组织(ISO)和国际电工委员会(IEC)再次发布了C89标准修订版,名叫ISO/IEC 9899:1990/Amd 1:1995 - C Integrity [7]  ,有些人简称为C95标准。

参考资料:百度百科-c语言

这个字符串的长度应该是7,而不是6
因为字符串是以\0结尾的,这个结尾符占1个字节,但是不显示出来
所以你把"abkedk"放进a[6]中其实是放不下的
可以用sizeof(a)/sizeof(a[0])看下数组a占的字节数
另外有个函数strlen(a)可以计算字符串中的字符数,结果不包括结尾符'\0'

for(i=0;i<10;i++)
printf("%d",a[i]);
是一个语句
是循环输出数组0-9中的数
省略后,i=10
输出a[10],超出数组范围,其中的数是编译器初始化的,
你的编译器初始化为1245120


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13154513.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-12
下一篇 2023-06-12

发表评论

登录后才能评论

评论列表(0条)

保存