| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1210 人关注过本帖
标题:问题继续。。。
只看楼主 加入收藏
shiaron
Rank: 1
来 自:天上天下,唯我独尊
等 级:新手上路
帖 子:29
专家分:0
注 册:2008-5-1
收藏
 问题点数:0 回复次数:16 
问题继续。。。
狂啃C中。。。问题实在是很多啊,还要各位指教咯~
把问题整理了下
1.main(){
  char *s="\ta\018bc";
  for(;*s!="\0";s++){
  printf("***");
  }
  getch();
}
为什么循环会一直做下去?
2.int a[5];
int *p=a=1000;
为什么对了?
3.#include "stdio.h"
#include "string.h"
main(){
   void xinchuan(char *p);
   char a[100],*s;
   s=a;
   xinchuan(s);
   getch();
}
void xinchuan(char *s){
   int i,n;
   printf("Please input a string;\n");
   scanf("%s",s);
   n=strlen(s);
   for(i=0;i<2*n-1;i++){
      if(*(s+i)!=' ')
         {
         strcpy(s+i+2,s+i+1);
         *(s+i+1)=' ';
         }
   }
   *(s+i)='\0';
   printf("%s",s);
}
本来是想让输入个字符串如“abcdef”然后转换成“a b c d e f”的,结果老失败,不知错在何方~还是要大家帮忙啊~
搜索更多相关主题的帖子: char xinchuan void int 
2008-05-03 02:04
剁吧剁吧
Rank: 1
等 级:新手上路
帖 子:51
专家分:0
注 册:2008-5-2
收藏
得分:0 
指针还不会..学习中
2008-05-03 02:10
netsolo
Rank: 1
等 级:新手上路
帖 子:122
专家分:0
注 册:2008-3-6
收藏
得分:0 
*s!="\0"
恕我愚昧,这是啥意思
2008-05-03 06:07
qq490456661
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2008-5-2
收藏
得分:0 
回LS:
省略的部分吧..
2008-05-03 07:00
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
1 你是在拿char和char*在比较,在我的C编译器上给出了char和char*转换的警告,在C++上报错。应该使用*s!='\0'或者*s!=0或者直接for(...;*s;...)...
2 我的编译器报错,无论是C还是C++……
3 给你一个实现。
/********************************************************
** Highlight software by yzfy(雨中飞燕) http:// *
*********************************************************/
#include <stdio.h>
#include <string.h>

char* NewString(char *p);

int main()
{
    char a[100];
    printf("Please input a string;\n");
    scanf("%s",a);
    printf("%s\n", NewString(a));
    getchar();
    return 0;
}
char* NewString(char *s)
{
    int i,n=strlen(s);
    for (i=2*(n-1);i>0;i--)
    {
        if (i%2)s[i]=' ';
        else s[i]=s[i/2];
    }
    s[2*n-1]='\0';
    return s;
}

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-05-03 07:03
shiaron
Rank: 1
来 自:天上天下,唯我独尊
等 级:新手上路
帖 子:29
专家分:0
注 册:2008-5-1
收藏
得分:0 
回复 5# 的帖子

~谢谢啦~不过第一题我是用WIN-TC的啦,就一直循环下去了,这些都是谭浩强的那本习题集上的,发现很多很BT的啊
2008-05-03 10:27
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
main()
{
    char *s = "\ta\018bc";
    for(;*s != "\0"; s++)    // 因该是'\0'
    {
        printf("***");
    }
    getch();
}

—>〉Sun〈<—
2008-05-03 11:25
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
int a[5];
int *p = a = 1000;   // a 是常量

如果不是TC的话,把int类型赋给指针类型也会报错。

—>〉Sun〈<—
2008-05-03 11:29
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
// strcpy() 不能拷贝两个重叠的字符串
// 用哪个函数拷贝忘了,所以自己写了一个
//

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void xinchuan(char *p);
char * str_mov(char * strDest, char * strSrc);

int main(void)
{
    char a[100], *s;

    s = a;
    xinchuan(s);

    getchar();
    return 0;
}

void xinchuan(char *s)
{
    int i, n;
    printf("Please input a string;\n");
    gets(s);
    n = strlen(s);
    for(i = 0; i < n * 2 - 1; i++)
    {
        if(*(s + i) != ' ')
        {
            str_mov(s + i + 2, s + i + 1);
            *(s + i + 1) = ' ';
        }
    }
    *(s + i) = '\0';
    printf("%s", s);
}

char * str_mov(char * strDest, char * strSrc)
{
    int i = 0;
    char * pSrc;

    if(!strDest || !strSrc)
        return NULL;
    else if(strDest == strSrc)
        return strDest;

    while(strSrc[i])
        i++;
    pSrc = (char *)malloc(i + 1);

    i = 0;
    while(pSrc[i] = strSrc[i])
        ++i;

    i = 0;
    while(strDest[i] = pSrc[i])
         ++i;

    free(pSrc);
    return strDest;
}

—>〉Sun〈<—
2008-05-03 12:19
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
回复 6# 的帖子
1 如果编译不出错,的确会一直循环过去:因为*s是永远不会等于"\0"这个字符串的地址的(不会有这么巧的事情吧?事实上不可能,因为编译器不会把字符串放在0~255的地方里面,那里是用来放中断地址的……)。同时,那本书上的习题其实没什么错误。我看是你自己不小心,把“"”输成了“'”才造成这样的后果……
2 C是弱类型的语言,而C++不是。还是建议向C++学习,要发现类型不一样的时候转换一个,这样容易发现错误,别都让编译器自己转换了……
3 字符串移动?说实在的这样的算法效率会很低……不过如果你真的要这么做的话……有memmove……

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-05-03 15:04
快速回复:问题继续。。。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017879 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved