【发布时间】:2014-03-17 09:48:29
【问题描述】:
如果您声明一个指针和一个 C char 数组,这样:
char arr[100];
char *ptr;
我说的对吗
*ptr 与ptr[] 相同,也就是说它是指向动态数组中第一个元素的指针?
然后,如果我要循环通过 NULL 终止的 char 数组,这样
printf("Enter a string");
gets(arr);
char *ptr = someCharString;
int increment;
while(*ptr++ != '\0')
increment++;
因此,increment 现在给出了字符串的长度(假设它是 NULL 终止的)。我认为这就是strlen 的工作原理..
所以这和ptr[length_of_char_string]是一样的
我如何将*ptr 重置回ptr[0],这样我就可以循环遍历*ptr,因为我有这样的长度,
for(int i = 0;i < increment;i++){
if(*ptr++ = 'a'){//Need ptr to start at the first element again
//Do stuff
}
}
【问题讨论】:
-
您可以将第一个元素的地址保存在其他变量中。
-
我认为你的意思不是
char *ptr = someCharString;,而是char *ptr = arr; -
不要使用
gets()。gets()使用是保证缓冲区溢出漏洞。请改用fgets()。