C语言字符串数组清0
时间: 2023-07-09 21:21:55 浏览: 161
可以使用 `memset` 函数将字符串数组清零。 `memset` 函数用于将一段内存空间的值设置为指定的值,通常用于初始化数组或清零缓冲区。
以下是一个示例代码,可以将字符串数组清零:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char *strArr[] = {"hello", "world", "0x00", "end", "0x00", NULL};
int len = sizeof(strArr) / sizeof(char *);
memset(strArr, 0, len * sizeof(char *));
int i;
for (i = 0; i < len; i++)
printf("%s ", strArr[i]);
return 0;
}
```
输出:`(null) (null) (null) (null) (null)`
相关问题
c语言怎么输入字符串数组
在C语言中,可以使用`scanf()`函数来输入字符串数组。下面是一个简单的示例:
```c
#include <stdio.h>
#include <string.h> // 需要包含string.h头文件,因为涉及到字符串处理
#define SIZE 5 // 定义数组大小
char str_array[SIZE][50]; // 创建一个二维字符数组,每个元素最多能容纳49个字符(包括'\0')
int main() {
int i;
printf("请输入%d个字符串:\n", SIZE);
for (i = 0; i < SIZE; i++) { // 使用循环遍历数组
printf("请输入第 %d 个字符串:", i+1);
fgets(str_array[i], sizeof(str_array[i]), stdin); // fgets用于读入一行字符串,包括空格和换行符
str_array[i][strcspn(str_array[i], "\n")] = '\0'; // 清除fgets可能带来的换行符
}
// 打印输入的字符串数组
for (i = 0; i < SIZE; i++) {
printf("输入的字符串 %d: %s\n", i+1, str_array[i]);
}
return 0;
}
```
在这个例子中,程序会提示用户输入指定数量的字符串,然后将它们存储在二维字符数组中。注意,为了安全起见,我们使用`fgets()`而不是`scanf("%s", ...)`,后者可能会导致缓冲区溢出的风险。
使用c语言构建一个字符串数组
在C语言中,你可以使用字符数组或者动态内存分配来创建一个字符串数组。这里我将演示如何使用静态存储(字符数组)和动态存储(通过`malloc`函数)来创建。
**1. 静态存储(字符数组):**
```c
#include <stdio.h>
#include <string.h>
#define MAX_STRINGS 5
// 定义字符串数组
char strings[MAX_STRINGS][50]; // 假设每个字符串最多49个字符加终止符'\0'
int main() {
int i;
// 初始化字符串数组
for (i = 0; i < MAX_STRINGS; i++) {
printf("请输入第%d个字符串:", i + 1);
fgets(strings[i], sizeof(strings[i]), stdin); // 注意fgets处理换行符
strings[i][strcspn(strings[i], "\n")] = '\0'; // 清理fgets留下的换行符
}
// 打印数组中的所有字符串
for (i = 0; i < MAX_STRINGS; i++) {
printf("%s\n", strings[i]);
}
return 0;
}
```
**2. 动态存储(malloc):**
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
int numStrings, i;
char **strings;
// 获取用户输入的字符串数量
printf("请输入字符串的数量:");
scanf("%d", &numStrings);
// 动态分配字符串数组
strings = (char **)malloc(numStrings * sizeof(char *));
if (!strings) {
printf("内存分配失败!\n");
return 1;
}
// 为每个字符串分配空间并输入
for (i = 0; i < numStrings; i++) {
printf("请输入第%d个字符串:", i + 1);
strings[i] = (char *)malloc((strlen(gets(NULL)) + 1) * sizeof(char)); // 为字符串加上终止符
fgets(strings[i], sizeof(strings[i]), stdin); // 输入字符串
strings[i][strcspn(strings[i], "\n")] = '\0'; // 清理换行符
}
// 打印数组中的所有字符串
for (i = 0; i < numStrings; i++) {
printf("%s\n", strings[i]);
}
// 清理动态分配的内存
for (i = 0; i < numStrings; i++) {
free(strings[i]);
}
free(strings);
return 0;
}
```
阅读全文