德国开元华人社区 开元周游

标题: [求助]一道关于指针的编程 [打印本页]

作者: wu888    时间: 17.4.2004 21:47
原题是这样的<br>  <span style='font-size:14pt;line-height:100%'><span style='font-family:Arial'>Schreiben Sie eine Funktion ausschnitt,die aus einer Zeichenkette einen Teilstring extrahiert und den ausgeschnittenen Teil in eine zweite Zeichenkette kopiert.Der Ausschnitt wird durch Angabe des ersten zu kopierenden Zeichens und der Anzahl der ab diesem(und insklusive dieses)zeichen(s) zu kopierenden definiert.</span></span><br><br>大概是这样的<br>    编辑一道程序,ausschnitt(string1,Teilsting2,c,n).在字符串string1中从某个字母C(该字母为第一次出现)开始剪切,直到此字母位置后的第n个字符字母为止,然后将这个剪切下来的字符串Teilsting2复制到另一个字符串中.<br><br>比如  ausschnitt(&quot;abcdefc&quot;,Teilsting2,`c&acute;,3)<br>  <br>剪切下来的结果就是 cde<br><br>诶 <!--emo&:huh:--><img src='http://www.kaiyuan.org/modules/ipboard/html/emoticons/huh.gif' border='0' style='vertical-align:middle' alt='huh.gif' /><!--endemo-->  不会不会 但星期4就要交了 ,希望高人指点.救我一命 <!--emo&:^:--><img src='http://www.kaiyuan.org/modules/ipboard/html/emoticons/cry_smile.gif' border='0' style='vertical-align:middle' alt='cry_smile.gif' /><!--endemo--> <br><br>         
作者: 小瘪三    时间: 18.4.2004 00:16
这也太简单了吧 <!--emo&:angry:--><img src='http://www.kaiyuan.org/modules/ipboard/html/emoticons/mad.gif' border='0' style='vertical-align:middle' alt='mad.gif' /><!--endemo-->  
作者: gm_jwl    时间: 18.4.2004 10:35
注意几点:判断n是否比要截的字符串长,这也可以是相对c而言;不要直接在string1上切;申请的临时变量要回收(这里仅对字符串指针)。另外这个函数应该有个返回值。<br>总之写出来不是很难,但要仔细一点为好。
作者: Guest    时间: 19.4.2004 08:27
<br>#include &lt;cstring&gt;<br>#include &lt;cstdio&gt;<br>#include &lt;iostream&gt;<br>using namespace std;<br>bool ausschnitt(const char* source, char* ziel,char zeichen,size_t len){<br>   char*   tmp=strchr( source, zeichen );<br>   if(&#33;tmp) <br>   {<br>      printf(&quot;No Char exist&quot;);<br>      return false;<br>   }<br>   if (strlen(tmp)&lt;len) <br>   {<br>      printf(&quot;len too small\n&quot;);<br>      return false;<br>   }<br>   if (&#33;strncpy( ziel, tmp, len ))<br>      return true;<br><br>}<br>int main(void)<br>{<br>   char*  source=&quot;I love c/c++, I love Linux,too&quot;;<br>   char zeichen=&#39;o&#39;;<br>   size_t len=12;<br>   char ziel[128];<br>   printf(&quot;Source: %s\nChar:%c\nLen:%d\n&quot;, source,zeichen,len);<br>   if (ausschnitt(source, ziel,zeichen,len))<br>   {<br><br>      for (size_t i=0;i&lt;len;i++)<br>         printf(&quot;%c&quot;,ziel);<br>      printf(&quot;\n&quot;);<br>   }<br>  <br>      else <br>      printf(&quot;Len too small\n&quot;);<br>     <br>    <br>   return 1;<br>}<br><br><br>//gcc version 3.2<br><br><br>//g++ -o ausschnitt -W -Wall ausschnitt.cxx && ausschnitt<br><br>//output<br>//<br>//Source: I love c/c++, I love Linux,too<br>//Char<br>//Len:12<br>//ove c/c++, I<br><br><br>




欢迎光临 德国开元华人社区 开元周游 (https://bbs.kaiyuan.cn/) Powered by Discuz! X3.2