标题:近来看看,是编译器问题还是程序错误(问题解决)
只看楼主
huangfengchu
Rank: 1
等 级:新手上路
威 望:2
帖 子:274
专家分:0
注 册:2007-5-22
 问题点数:0 回复次数:5 
近来看看,是编译器问题还是程序错误(问题解决)

这是合并两字符串一试验。运行输出不对。

#include"stdio.h"
int main(void)
{
void concat(char result[],const char str1[],const str2[]);
const char s1[]="Test ";
const char s2[]="works.";
char s3[20];

concat(s3,s1,s2);
printf("%s\n",s3);
getch();
return 0;
}
void concat(char result[],const char str1[],const str2[])
{
int i,j=0;
for (i=0;str1[i]!='\0';++i)
result[i]=str1[i];

for(;str2[j]!='\0';++j)
result[i+j]=str2[j];
result[i+j]='\0';
}
输出为Test wrs,就没了,好象result[i+j]这里每次i的值也好象在这样加?请指示下。

[此贴子已经被作者于2007-6-16 0:28:48编辑过]

搜索更多相关主题的帖子: void include return 编译器 
2007-06-15 23:13
love154139
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2007-5-6
得分:0 

程序有部分错误...
首先const修饰常量是C++中的用法,好象C语言中并无此用法
而且getch();函数在包含在conio.h头文件中的

正确的程序,已编译通过运行

#include <stdio.h>
#include <conio.h>
void main()
{
void concat(char result[],char str1[],char str2[]);
char s1[]="Test ";
char s2[]="works.";
char s3[20];
concat(s3,s1,s2);
printf("%s\n",s3);
getch();
}
void concat(char result[],char str1[],char str2[])
{
int i,j=0;
for (i=0;str1[i]!='\0';++i)
result[i]=str1[i];

for(;str2[j]!='\0';++j)
result[i+j]=str2[j];
result[i+j]='\0';
}


2007-06-15 23:30
huangfengchu
Rank: 1
等 级:新手上路
威 望:2
帖 子:274
专家分:0
注 册:2007-5-22
得分:0 

郁闷,我瞎眼了,现在才发现第二个参数没加char,晕死。。。
const 是传递给函数,但不改变其值,C中也可以用,谢谢楼上,我发现我很瞎子。


深山苦学C语言,终年不见外面世界。
2007-06-15 23:34
百年不亮
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:789
专家分:0
注 册:2006-4-14
得分:0 
我之前写了个返回字符指针的实现,楼主的字符串连接部分可以参考我下面简洁一些的实现

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

char * Mystrcat(char * str_1,char *str_2);
int main()
{
char *string;
string = Mystrcat("hello ","word");
puts(string);
return 0;
}

char * Mystrcat(char * str_1,char *str_2)
{
char *array,*ptr;

ptr=array=(char *)malloc(strlen(str_1)+strlen(str_2));
while(*ptr++ = *str_1++) ;
ptr--;
while(*ptr++ = *str_2++) ;

return array;
}
2007-06-16 00:07
huangfengchu
Rank: 1
等 级:新手上路
威 望:2
帖 子:274
专家分:0
注 册:2007-5-22
得分:0 
谢谢楼上,我参考下。

深山苦学C语言,终年不见外面世界。
2007-06-16 00:21
liyuewen
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2007-5-7
得分:0 
个人认为void不需要加return
2007-06-23 01:52



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-147860-1-1.html




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

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