>我正在使用固定大小的字符串的全局数组来临时存储来自 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);
使用不同的变量名称(tempArra与temparray不是同一个变量(。试试这个:
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); <<<<<<<
}