用原来的字母后面第4个字母代替原来的字母。例如,字母“A”后面的第4个字母是“E”,用“E”代替“A”。
因此,“China”应译为“Glmre”。请编一程序,用赋初值的方法使c1、c2、c3、c4、c5五个变量的值分别为‘C’、
‘h’、‘i’、‘n’‘a’,经过运算,
使c1、c2、c3、c4、c5分别变为‘G’、‘l’、‘m’、‘r’、‘e’,并输出。
*/
#include <stdio.h>
#include <string.h>
void main()
{
char * GeneratePwd(char *);
char * OldChars="China";
printf("老字符串是%s\n",OldChars);
printf("老字符串的长度是%d\n",strlen(OldChars));
printf("新字符串是%s\n",GeneratePwd(OldChars));//执行到这里出错,说不能写入
return ;
}
char * GeneratePwd(char * aa)
{
char *string =aa;
while(*string)
{
*string=(*string)+4;//断点停在这里。说*string不能写入
string++;
}
*string=NULL;
return aa;
}
9 个解决方案
#1
char * OldChars="China";
==============>改成
char OldChars[]="China";
==============>改成
char OldChars[]="China";
#2
char * OldChars="China"; //"China";存储在静态区域,不可以修改,所以下面的函数修改了字符串内容是不允许的。
#3
谭浩强居然没有说,真是的,哎。
#4
char* c1="abcdefg";
char c2[]="abcdefg";
c1是一个指向的字符串常量(只读的)的指针,
c2则是一个字符数组的地址,所以可以通过*(c2+i)来改变第二个数组得值。
char c2[]="abcdefg";
c1是一个指向的字符串常量(只读的)的指针,
c2则是一个字符数组的地址,所以可以通过*(c2+i)来改变第二个数组得值。
#5
源代码是没有什么问题,楼主你关键的是没有把字符串指针的用法没有弄清楚它的正确用法!
好运~~~~~
===============================================================================
鉴定完毕!
好运~~~~~
===============================================================================
鉴定完毕!
#6
用原来的字母后面第4个字母代替原来的字母,要求密文也是字母么?
那么‘{’‘}’......是不是就不算字母了呢?
那么‘{’‘}’......是不是就不算字母了呢?
#7
把char * OldChars="China";改成char OldChars[]="China";另外把*string=NULL改为string=NULL
#8
mark
#9
题外话:
1.为什么不写 *string += 4;
2.*string=NULL;多余
1.为什么不写 *string += 4;
2.*string=NULL;多余
#1
char * OldChars="China";
==============>改成
char OldChars[]="China";
==============>改成
char OldChars[]="China";
#2
char * OldChars="China"; //"China";存储在静态区域,不可以修改,所以下面的函数修改了字符串内容是不允许的。
#3
谭浩强居然没有说,真是的,哎。
#4
char* c1="abcdefg";
char c2[]="abcdefg";
c1是一个指向的字符串常量(只读的)的指针,
c2则是一个字符数组的地址,所以可以通过*(c2+i)来改变第二个数组得值。
char c2[]="abcdefg";
c1是一个指向的字符串常量(只读的)的指针,
c2则是一个字符数组的地址,所以可以通过*(c2+i)来改变第二个数组得值。
#5
源代码是没有什么问题,楼主你关键的是没有把字符串指针的用法没有弄清楚它的正确用法!
好运~~~~~
===============================================================================
鉴定完毕!
好运~~~~~
===============================================================================
鉴定完毕!
#6
用原来的字母后面第4个字母代替原来的字母,要求密文也是字母么?
那么‘{’‘}’......是不是就不算字母了呢?
那么‘{’‘}’......是不是就不算字母了呢?
#7
把char * OldChars="China";改成char OldChars[]="China";另外把*string=NULL改为string=NULL
#8
mark
#9
题外话:
1.为什么不写 *string += 4;
2.*string=NULL;多余
1.为什么不写 *string += 4;
2.*string=NULL;多余