我正在使用一个固定大小的字符串的全局数组来暂时存储来自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); 无效。有什么帮助吗?
答案 0 :(得分:1)
使所有指针为NULL
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;
答案 1 :(得分:1)
您执行memset的行:
memset(temparray, '\0', 100);
使用不同的变量名称( tempArra 与 temparray 不是同一个变量)。试试这个:
memset(tempArra, 0, sizeof(tempArra));
答案 2 :(得分:0)
你的阵列是一群无处不在的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); <<<<<<<
}