C问题,求助
一个小题目,输入一个字符串,然后碰到大写转小写,小写,转大写,其他字符不变
下面代码,哪里不对
麻烦各位指导
#include<iostream.h>
#include "string.h"
#include <stdio.h>
void main ()
{
char primes[100];
char *s=primes;
cout<<"输入需转化的字符"<<endl;
cin>>*s;
//scanf("%s"primes);
while (*s!='\0')
{
if((*s>='A')&&(*s<='Z'))
*s+=32;
else if((*s>='a')&&(*s<='z'))
*s-=32;
s++;
}
//for(int i=0;i<=sizeof(*s);i++)
cout<<"输出转化后的字符"<<primes<<endl;
}
[解决办法]
#include<iostream>#include <string.h>#include <stdio.h>using std::cin;using std::cout;using std::endl;void main (){ char primes[100]; char *s=primes; cout<<"输入需转化的字符"<<endl; cin>>s; //scanf("%s"primes); while (*s!='\0') { if((*s>='A')&&(*s<='Z')) *s+=32; else if((*s>='a')&&(*s<='z')) *s-=32; s++; } //for(int i=0;i<=sizeof(*s);i++) cout<<"输出转化后的字符"<<primes<<endl;}
[解决办法]
cin>>*s; // 去掉*
没学过C++,应该是这样改吧
[解决办法]
s是一个char *型变量,里面存的是一个4字节的地址。
char *s=primes语句,将primes字符串的第一个元素的地址传&primes[0]传到char *变量s中。
cin>>s语句,若为楼主所写cin>>*s,相当于在为primes[0]赋值。
[解决办法]
#include<iostream>#include "string.h"using namespace std;char change(char character){ if ( character<= 'z' && character>= 'a') { return character-32; } else if (character<= 'Z' && character>= 'A') { return character+ 32; }} int main (){ char primes[100]; char *s=primes; cout<<"输入需转化的字符"<<endl; cin>>s; while(*s!='\0') { *s=change(*s); s++; } cout<<"输出转化后的字符"<<primes<<endl; system("pause"); return 0;}供您参考。。