在TC和VC中关于字符处理的区别!这里我们把字符型的数字转换成整形数字!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在TC和VC中关于字符处理的区别!这里我们把字符型的数字转换成整形数字!相关的知识,希望对你有一定的参考价值。

#include"stdio.h"
main()

long s=0,i=0,flot=1 ;
char *str;
scanf("%s",str);
printf("=============\n原本格式%s\n",str);
if(*str=="-")//这里判断我们输入的第一个是不是有一个负号,如果有我们就为-1我们最终的结果剩以这个变量!

flot=-1;
str++;

while(*str!='\0')

i=*str-'0';//每一个字符是按ASCII码来计算的。如果要转换成数字就要-'0'这里的*str是一个指针指向一个字符
s=s*10+i;//这里*10是为了让这个下一个数进位!用s来求得这个int型数
str++;//做完了这些过后我们就要把指针移动一下指向下一个了!

printf("==================\n转换后格式%d\n",s*flot);//这里*flot是为了还原出是不是负数!


这个在TC中能正确运行在VC中就不能了!

这不在于处理方法。处理方法是你写的。
问题在于你声明了:
char *str;
str 自身没有存放字符串的单元。你要么初始化,给它存储单元,或动态分配单元。或者只用它作指针。
如果这样:
char a[100]; char *str; str = &a[0]; scanf("%s",str);
就没问题了。
VC 要求比较严格。追问

我也这么试过的。开始以为如果指针没有指向任何地址它就不能。我也这么写过的。也是不行的。scanf语句貌似不能这样输入一个字符串!

追答

“scanf语句貌似不能这样输入一个字符串”--- 你再试一下便有体会了(如此简单):
#include
#include
main()
char a[100];
char *str;
str = &a[0];
scanf("%s",str);
printf("%s\n",a);
// 。。。。

----------
if(*str=="-") // 不能用双引号,双引号括起的是字符串,字符串比较 要用 strcmp(),strncmp().
if (*str == '-' ) // 是可以的。

参考技术A flot VC中是float吧

可以typedef flot float追问

这个知道。我这里只要把它当做一个变量。随便用的一个变量!

追答#include"stdio.h"
main()

 long s=0,i=0,flot=1 ;
 char str[10];//这里我改成了数组
 char *p=str;  用指针指向数组
 scanf("%s",str);
 printf("=============\\n原本格式%s\\n",str);
 if(*p=="-")//这里判断我们输入的第一个是不是有一个负号,如果有我们就为-1我们最终的结果剩以这个变量!
 
   flot=-1;
   p++;
 
 while(*p!='\\0')
 
  i=*p-'0';//每一个字符是按ASCII码来计算的。如果要转换成数字就要-'0'这里的*str是一个指针指向一个字符
  s=s*10+i;//这里*10是为了让这个下一个数进位!用s来求得这个int型数
  p++;//做完了这些过后我们就要把指针移动一下指向下一个了!
 
printf("==================\\n转换后格式%d\\n",s*flot);//这里*flot是为了还原出是不是负数!
system("pause");



改用数组  我改好了

java中关于String和StringBuffer的问题与解析

问题一:String 和 StringBuffer 的区别
JAVA 平台提供了两个类: String 和 StringBuf fer ,它们可以储存和操作字符串,即包含多个字符的字符数据。这个 String 类提供了数值不可改变的字符串。而这个 StringBuf fer 类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用 StringBuf fer 。典型地,你可以使用StringBuf fers 来动态构造字符数据。
问题二:swtich 是否能作用在 byte byte byte byte 上,是否能作用在 long long long long 上,是否能 作
用在 String上 ?
switch ( expr1 )中, expr1 是一个整数表达式。因此传递给 switch 和 case 语句的参 数
应该是 int 、 short 、 char 或者 byte 。 long,string 都不能作用于 swtich 。






以上是关于在TC和VC中关于字符处理的区别!这里我们把字符型的数字转换成整形数字!的主要内容,如果未能解决你的问题,请参考以下文章

为啥在网上找的一些c语言程序的代码在vc++6.0中编译总是出现错误?求指教

Python中关于split和splitext的差别和运用

Java中关于string的些许问题及解析

java中关于String和StringBuffer的问题与解析

高分求助VC中关于不定参数宏的使用

Mybatis中关于字符串参数的判断