我还有一个练习C我的课。该代码不会崩溃,但不能按预期工作。显然我犯了一个我找不到的错误。 作业如下: 用户输入两个字符c1和c2以及整数n,您必须创建一个动态创建的函数并返回一个字符串,其中包含n个字符,如下所示:c1c2c1c2c1c2等 例如: c1 = a和c2 = s和n = 4字符串是:asas这个C代码有什么问题? (不按预期工作)
但是,我创建的数组不包含c1和c2,但是来自ASCII表中的一些随机字符。加上这里:
printf("\nThe string is: %s\n",s);
在屏幕的输出是这样的:大江字符串是:我(字符串的insted的是:S-无论小号是 - ) 这里有一张照片,从该.exe文件的链接:
#include <stdio.h>
#include <stdlib.h>
char* alternate(char c1,char c2,int n)
{
int i;
char *s;
s=(char*)malloc((n+1)*sizeof(char));
if(s==NULL)
{
puts("Could not allocate memory!");
exit(1);
}
for(i=0;i<n;i++);
{
if(i%2==0)
s[i]=c1;
else
s[i]=c2;
}
s[i]='\0';
return s;
}
main()
{
char c1,c2,*s;
int n;
puts("Give two characters: ");
scanf("%c %c",&c1,&c2);
fflush(stdin);
puts("Give an integer: ");
scanf("%d",&n);
s=alternate(c1,c2,n);
printf("\nThe string is: %s\n",s);
free(s);
system("pause");
}
预先感谢您!
你试过在一个调试器中运行呢?逐步运行以检查所有工作是否正常。你也应该检查'scanf'的返回值来看它是否成功。 – 2013-03-23 15:20:46
您不需要在C程序中投射'malloc()'的返回值。 'sizeof(char)'是'1'。 – 2013-03-23 15:21:04
@CarlNorum感谢您的提示!我们的教授告诉我们这样做(类型转换),以使代码与C和C++编译器兼容。 – syfantid 2013-03-23 15:47:20