怎么实现这一句C语言的效果?(169)

Discussion in '请您翻译' started by 冰力不足, Jul 18, 2009.

  1. 冰力不足

    冰力不足 Member

    Apr 1, 2015
    void __fastcall TForm1::Button1Click(TObject *Sender){ char BLbuf[255];
    char *s;
    char *sa[5];
    s = "yynnbbmm";
    sa[0] = s;
    // 把字符串s的内容赋值给数组的第一个sa[0] sprintf(BLbuf, "%s", sa[0]);
    Memo1->Lines->Add(BLbuf);
    // sa[0] 显示 yynnbbm s+=3;
    // 指针向后移动3 *s = '/0';
    // 把当前指针指向的字符修改为结束符号 '/0' sprintf(BLbuf, "%s", sa[0]);
    Memo1->Lines->Add(BLbuf);
    // sa[0] 显示 yyn}procedure TForm1.Button1Click(Sender: TObject);var s: PChar;
    sa: Array[0..4] of PChar;
    begin
    s := 'yynnbbmm';
    sa[0] := s;
    Memo1.Lines.Add(sa[0]);
    // sa[0] 显示 yynnbbm inc(s, 3);
    s := #0;
    Memo1.Lines.Add(sa[0]);
    // sa[0] 显示 yynnbbmend;
    怎么实现象C那样 通过这一句 *s = '/0';
    把sa[0]显示的结果由 yynnbbm 变成 yyn也就是说, 在delphi中, 怎么移动指针并且修改指针指向地址的一个字符?致谢!
     
  2. dh

    dhszxh Member

    Apr 1, 2015
    欢迎加入:89862412c#讨论群!刚开的!我看其它好多群都满了,所以自己建了一个,希望和大家一起学习进步!
     
  3. ea

    eachbuilder Member

    Apr 1, 2015
  4. 冰力不足

    冰力不足 Member

    Apr 1, 2015
    谢谢 轻舞肥羊, s^ := #0;
    运行会出错.谢谢 eachbuilder可否说详细点?
     
  5. 冰力不足

    冰力不足 Member

    Apr 1, 2015
    procedure TForm1.Button3Click(Sender: TObject);var s: PChar;
    sa: Array[0..4] of PChar;
    begin
    s := 'yynnbbmm';
    sa[0] := s;
    //Memo1.Lines.Add(sa[0]);
    Memo1.Lines.Add(format('@s=%p s=%s s^=%s', [@s, s, s^]));
    inc(s, 3);
    //s := Pointer(Integer(s) + 1);
    //s := #0;
    Memo1.Lines.Add(format('@s=%p s=%s s^=%s', [@s, s, s^]));
    s := #0;
    Memo1.Lines.Add(format('@s=%p s=%s s^=%s', [@s, s, s^]));
    //Memo1.Lines.Add(sa[0]);
    end;
    显示结果:mad:s=0012F628 s=yynnbbmm s^=y@s=0012F628 s=nbbmm s^=n@s=0012F628 s= s^=指针地址咋不变?
     
  6. ea

    eachbuilder Member

    Apr 1, 2015
    以下两法皆可:procedure TForm1.Button1Click(Sender: TObject);var S: string;
    begin
    S := 'yynnbbmm';
    Memo1.Lines.Add(S);
    // 显示 yynnbbm SetLength(S, 3);
    Memo1.Lines.Add(S);// 显示 yynend;
    procedure TForm1.Button2Click(Sender: TObject);var sa: array[0..255] of Char;
    begin
    StrPCopy(@sa[0], 'yynnbbmm');
    Memo1.Lines.Add(StrPas(@sa));
    // 显示 yynnbbm sa[3] := #0;
    Memo1.Lines.Add(StrPas(@sa));
    // 显示 yynend;
     
  7. 冰力不足

    冰力不足 Member

    Apr 1, 2015
  8. 冰力不足

    冰力不足 Member

    Apr 1, 2015