一次C语言编程遇到的问题总结

今天用C语言做了一个简单的用户登录注册存取款等功能的系统,发现有很多功能并不会实现,大概是使用Java太多了导致许多C的知识都忘记了,现在把碰到的问题总结如下:

1、字符串复制问题

java等一些编程语言使用习惯了我们经常会用

String s1 = "abc",String s2 = s1

这种方式来给字符串赋值,但C语言一般使用的是char[]数组来存储字符串,所以在赋值的时候不可以使用单纯的赋值符"=",使用的是string.h头文件中包含的strcpy函数。如:

char a[20];
char b[20];
strcpy(a,b);

这样可以实现将b的值赋值给a。

2、字符串分隔问题

Java分隔字符串有专门的split函数来实现,C语言也有专门的函数实现,下面是一个实例:

char *p;
char StrLine[10] = “a;b;c”;
p = strtok(StrLine,";");
while(p != NULL){
    printf("%s\n",p);
    p = strtok(NULL,";");
}

strtok函数:

原型:char *strtok(char s[], const char *delim);

介绍:分解字符串为一组字符串。s为要分解的字符,delim为分隔符字符(如果传入字符串,则传入的字符串中每个字符均为分割符)。首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL。

3、字符串转数字问题

扫描二维码关注公众号,回复: 5470047 查看本文章

例如现在有int a[3]={'1','2','3'}一个一维数组,如果要将其转换为123这个数字,我们可以这样:

1)计算a的长度,假设为n

2)分别将a[0]~a[n-1]转换为数字

3)这个数字就等于a[0]*10n-1+a[1]*10n-2+...+a[n-1]*100

这种方法确实可以实现,但是这种方法一是费时间二是费内存。

所以C语言有一个函数可以实现这种功能:atoi(a):

int atoi(const char *nptr) 函数会扫描参数 nptr字符串,会跳过前面的空白字符(例如空格,tab缩进)等。如果 nptr不能转换成 int 或者 nptr为空字符串,那么将返回 0 。特别注意,该函数要求被转换的字符串是按十进制数理解的。

猜你喜欢

转载自www.cnblogs.com/guo-xu/p/10498628.html