|
查看: 1153|回复: 3
|
c programming 的问题 帮帮忙 !! [已解决]
[复制链接]
|
|
|
本帖最后由 illusionX 于 29-12-2009 02:53 PM 编辑
我的问题是 add string, 就是把两个 string 加在一起这么简单,第一个是 first string + second string
第二个是 second string + first string
但是我输入了两个 sting 过后,例如 1. asd 2. dsa
答案出来是:
1. asddsa
2. dsaasd*
那个*是一直会random出现一些很搞笑的符号,为什么会这样?
p/s : 有一定的几率答案会对 ==..
- #include <stdio.h>
- #include <stdlib.h>
- int main(){
- int lengthA, lengthB;
- int i;
- char stringA[30];
- char stringB[30];
- char stringA1[30];
- char stringB1[30];
-
-
- printf("Enter the first string, maximum 30 characters : "); // 1st sting input
- gets(stringA);
- fflush(stdin);
-
- lengthA = strlen(stringA);
- for(i=0; i<lengthA; i++){
- stringA1[i] = stringA[i];
- }
-
- while(lengthA>50){
- printf("You only can input maximum 30 string, please input again : ");
- gets(stringA);
- fflush(stdin);
- }
-
- printf("\nYou have input : [ %s ]\n", stringA);
- printf("The length of the string are [ %d ]\n\n", lengthA);
-
- printf("Enter the second string, maximum 30 characters : "); // 2nd string input
- gets(stringB);
- fflush(stdin);
-
- lengthB = strlen(stringB);
- for(i = 0; i < lengthB; i++){
- stringB1[i] = stringB[i];
- }
-
-
- while(lengthB>50){
- printf("You only can input maximum 30 string, please input again : ");
- gets(stringB);
- fflush(stdin);
- }
-
-
-
- printf("\nYou have input : [ %s ]\n", stringB);
- printf("The length of the string are [ %d ]\n\n", lengthB);
-
-
- printf("\t1. %s.\n", strcat(stringA, stringB));
- printf("\t2. %s.\n", strcat(stringB1, stringA1));
-
- system("pause");
-
-
- }
复制代码 |
|
|
|
|
|
|
|
|
|
|
发表于 29-12-2009 01:55 PM
|
显示全部楼层
在24行添加在43行添加楼主犯了一个C初学者很容易犯得一个错误,C语言中的字符串(string)必须要以0为结束。其实占了4个字节,最后一个字节是0 ,而这个string的长度是3,所以你用strlen(str)得到的是3。要注意两者之间的区别,在申请存储空间的时候要在string长度上+1。
请搜索技术手册中“null terminated string”。
另外第26和45行也不对,此时检测string长度,实际上已经造成内存越界。 |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 29-12-2009 02:33 PM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 14-1-2010 11:10 AM
|
显示全部楼层
|
|
|
|
|
|
|
|
| |
本周最热论坛帖子
|