2015-06-19 45 views
0

你好,我想读的输入和增加每个字符的字符串的左侧,例如:写入字符串到左用C

我所做的输入1,输出应该是:

1 

然后我想添加的号码2:输出应该是:

21 

然后我想添加的号码3:输出应该是:

321 

然后我要添加的数量4:输出应为:

4321 

等...

到目前为止我已成功的情况下串长度= 0和1:

if(stringLength == 1){ 
    string[ stringLength++ ] = string[ 0 ]; 
    string[ pStringLength - 1 ] = input; 
} 
else if(stringLength == 0) 
    string[ stringLength++] = input; 

我的问题是在stringLength> 2:

if(stringLength >= 2){ 
    for(indexx = 1; indexx < stringLength; indexx++){ 
     string[ stringLength++ ] = string[ stringLength - indexx ]; 
    } 
    string[ 0 ] = input; 
} 

上面的代码给我分段错误,在此先感谢您的帮助! 编辑!!:

if(stringLength >= 2){ 
    for(indexx = 1; indexx < stringLength; indexx++){ 
     string[ stringLength ] = string[ stringLength - indexx ]; 
    } 
    stringLength++; 
    string[ 0 ] = input; 
} 

现在输出始终限制在2:

如果我有:

21 

,我尝试添加 '3':

32 

'1'被删除,刚刚离开最后2个输入...

+0

string [stringLength ++]正在使循环无限 – aa1992

回答

3
string[ stringLength ] = string[ stringLength - indexx ]; 

上面的语句不断将overwritting相同index.Thats为什么输出被限制为2个位数。

提示:您需要将元素从结尾开始向右推一个位置,以便最后覆盖字符串[0]。

假设阵列是{1,2,3,4}和我要添加5所以输出应该是{5,1,2,3,4}

然后由每个元件移动到右从最后一个位置将使数组{1,1,2,3,4},然后你可以做数组[0] = 5;

移动可以通过这种方式

for(i=arr.length-1;i>=1;i--) 
{ 
    arr[i]=arr[i-1]; 
} 

希望它可以帮助来完成。

+0

谢谢兄弟!我必须对该代码进行的唯一修改是针对(i = arr.length; i> = 1; i--)(i = arr.length-1; i> = 1; i--)我非常感谢你的帮助! – Javi9207

3

如果在循环内部增加stringLength,则循环永远不会结束,因为循环条件检查stringLength的值。

+0

我看不到这些! – Javi9207

1

看看下面的代码。

#include <stdio.h> 
int main() 
{ 
    char a[10] = ""; 
    int i = sizeof(a)-2; 
    while(i>=0) 
    { 
     scanf(" %c",&a[i]); 
     printf("%s\n",a+i); 
     i--; 
    } 
    return 0; 
} 

我遵守了我的数组大小10是高达你来决定数组的大小。

输出:

1 
1 
2 
21 
3 
321 
4 
4321 
5 
54321 
6 
654321 
7 
7654321 
8 
87654321 
9 
987654321 
+0

对不起兄弟,我不能将你的代码添加到我的代码中,谢谢你的关注!我已经尝试了另一种蚂蚁,它为我工作! – Javi9207