如何在 C 中清空字符串的静态数组



>我正在使用固定大小的字符串的全局数组来临时存储来自 stdin 的输入。我正在从 while 循环中的 stdin 获取输入。我希望将每一行存储在该全局数组中,并在处理第一行后将其清空,对于另一行,我也想使用相同的数组。下面是我的高级代码

char *tempArra[100];
char line[1024];
while(1){
if (!fgets(line, 1024, stdin))
return 0;
// tokenize line and store in  tempArray
//after done processing that line, empty tempArray to process anotherline
}

我尝试了memset(temparray,'\0',100(;没有工作。请帮忙吗?

你做内存集的行:

memset(temparray, '', 100);

使用不同的变量名称(tempArratemparray不是同一个变量(。试试这个:

memset(tempArra, 0, sizeof(tempArra));

编辑:

使所有指针为空

memset(tempArra, 0, sizeof(tempArra));

如果要使line字符串长度为零

line[0] = 0;

或完全归零

memset(line, 0, size of the `line`);
<小时 />

编辑前

您必须先分配内存:例如

tempArra[x] = malloc(something);

然后你需要释放它

free(tempArra[x]);

Yo 还可以将 NULL vaslue 分配给数组的元素以将其标记为空闲

tempArra[x] = NULL;

你的数组是一个无处可去的piointers数组。您需要分配然后复制。strdup会为您做

char *tempArra[100];
char line[1024];
int i = 0;
while(1){
if (!fgets(line, 1024, stdin))
return 0;
// tokenize line and store in  tempArray
//after done processing that line, empty tempArray to process anotherline
tempArra[i++] = strdup(line); <<<<<<<
}

最新更新