首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

新手c语言有关问题 strcpy()函数

2012-06-02 
新手c语言问题strcpy()函数printf(请输入:)while((ch[i]getch())!32){printf(*)strcpy(b,ch)//第

新手c语言问题 strcpy()函数
printf("请输入:");
while((ch[i]=getch())!=32)
{ printf("*");

strcpy(b,ch);//第一处

if((ch[i]<47)||(ch[i]>58))
{ i=-1;
printf("错误,含有非法字符,请重新输入\n");
printf("请输入:");
   
}
i++;
}
strcpy(c,ch);//第二处
  puts(c);printf("\n");
puts(b);printf("\n");
我觉的第一处与第二处有区别可是不道在哪里????????????
程序运行时没有看出问题呀?
结果没有问题。
希望大家可以告诉我一下。

[解决办法]
while((ch[i]=getch())!=32)
第一、循环只是再给一个元素赋值,i的值并没有变化。
第二、strcpy的字符串需要时以'\0'结尾的,没有'\0'结尾的就不是字符串了。因此在做strcpy前需要保证字符指针或者数组都是以'\0'结尾的。
[解决办法]

探讨

引用:
首先strcpy用法不妥。
第一处复制的都是合法的值,第二处复制的是ascii为32的字符,即空格;
最后打印的一个是输入空格的前一个字符,一个是空格。


我输入123456 可是puts出的两个结果一样。为什么?

[解决办法]
我觉得楼主这里是要写成这样吧

if(!isdigit(ch[i]))
{
i -= 1;
printf("错误,含有非法字符,请重新输入\n");
printf("请输入:");
}
i++;


比较合理。。

热点排行