我是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语句,它不起作用......
答案 0 :(得分:1)
将变量定义为char *toDecrypt = node->string;
如果您愿意,您仍然可以使用[]
符号来读取/写入。
答案 1 :(得分:0)
这是wrong:char 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] != '\\';