如何在C中迭代指向char数组的指针?

时间:2013-04-01 18:20:18

标签: c string loops for-loop

我是C的新手,我在确定执行此操作的确切方法时遇到了一些麻烦。

我需要遍历一个字符串并一次存储一个字母,以便对其进行解密。

所以我正在做的是:

#1。创建存储字符串的位置:

char toDecrypt[] = node->string;

#2。启动for循环:

for(int m=0; m< strlen(toDecrypt); ++m)

#3。存储char(稍后解密):

char i = toDecrypt[m];

以上是否有效,或者我应该使用其他符号来正确存储char?

编辑:

好的,我想我已经解决了,所以我只有一个跟进问题。

如何查看char是否为“\”?我的支票似乎不起作用。

当我把

toDecrypt[m] != '\';

进入if语句,它不起作用......

3 个答案:

答案 0 :(得分:1)

将变量定义为char *toDecrypt = node->string;

如果您愿意,您仍然可以使用[]符号来读取/写入。

答案 1 :(得分:0)

这是wrongchar toDecrypt[] = node->string;

您可以通过以下方式解决问题:

char *toDecrypt = node->string;

char *toDecrypt=(char*) malloc (strlen(node->string)+1);
strcpy(toDecrypt,node->string);

答案 2 :(得分:0)

  
      
  • 创建存储字符串的位置:
  •   

你实际上已经有了存放字符串的地方。 node->string存储字符串就好了。你可以创建一个指向它的指针:

char *toDecrypt = node->string;

或者如果你想让某个地方复制它,你可以制作一个数组:

char toDecrypt[enough_space_for_the_string];

// or do it dynamically with:
//     char * toDecrypt = malloc(enough_space_for_the_string);
//     just don't forget to free() it later

strcpy(toDecrypt, node->string);
  
      
  • 如何检查字符是否为“\”?我的支票似乎不起作用。
  •   

反斜杠是C中的转义字符,因此如果要检查反斜杠,则需要使用正确的escape sequence

toDecrypt[m] != '\\';