【问题标题】:C for loop not workingC for 循环不工作
【发布时间】:2013-12-25 18:53:12
【问题描述】:
#include <stdio.h> 
char str[5][10]={"asdasdasd", "", "", "qweqweqwe", "asdasdasd"};

int main (){
change (4, 5, 3, 2);

}


void change (int r1, int c1, int r2, int c2){
int i=0;
for (i=0; i<2; i++){
str[r2][c2+i] = str[r1][c1+i];
}
for (i=0; i<2; i++){
str[r1][c1+i] = ' ';
}
return;
}

str 是一个二维字符串。 当我调试它时,第二个 for 循环正常工作并删除了这些字符,但第一行不起作用。为什么?

错误是,当我打印字符串时,[r1][c1] 和 [r1][c1+1] 处的字符被删除,但 [r2][c2] 和 [r2][c2+1] 是还是空的。

【问题讨论】:

  • 一定会喜欢这些“核心语言功能 X 不起作用”的问题。
  • 这行str[10][5]={"asdasdasd", "", "", "qweqweqwe", "asdasdasd"};是各种错误
  • 您建议将此问题命名为什么,以防其他问题? :)
  • uupsss,对不起。已编辑。
  • 再次编辑,忘记使用r2

标签: c string loops for-loop


【解决方案1】:

我尝试运行它,我的 r1 和 r2 输出是

qwdaweqwe

asdas--sd(两个空格)

基本上这是代码应该做的。

但如果我的意图是正确的,你会想要使用那些空字符串。然后你应该为你的函数提供不同的数字,因为数组索引从 0 到 n-1,这意味着如果你想使用第二个空字符串,请使用索引 2。我试过了,但声明有问题。你可以试试这个

char str[5][10] = { "asdasdasd", "         ", "         ", "qweqweqwe", "asdasdasd" };

或者对这两个空字符串使用一些很好的 malloc。上面的代码有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-02
    • 1970-01-01
    • 1970-01-01
    • 2015-02-03
    • 1970-01-01
    • 2020-03-30
    • 2018-05-29
    相关资源
    最近更新 更多