什么';这个C代码怎么了?(未按预期工作)
我还有一个C班的练习。代码没有崩溃,但没有按预期工作。显然,我犯了一个找不到的错误。 任务是这样的: 用户输入两个字符c1和c2以及一个整数n,您必须创建一个函数,动态创建并返回一个包含n个字符的字符串,如:C1C2C1C2等。 例如: c1=a,c2=s,n=4字符串为:asas 但是,我创建的数组不包含c1和c2,而是ASCII表中的一些随机字符。加上:什么';这个C代码怎么了?(未按预期工作),c,function,pointers,C,Function,Pointers,我还有一个C班的练习。代码没有崩溃,但没有按预期工作。显然,我犯了一个找不到的错误。 任务是这样的: 用户输入两个字符c1和c2以及一个整数n,您必须创建一个函数,动态创建并返回一个包含n个字符的字符串,如:C1C2C1C2等。 例如: c1=a,c2=s,n=4字符串为:asas 但是,我创建的数组不包含c1和c2,而是ASCII表中的一些随机字符。加上: printf("\nThe string is: %s\n",s); 屏幕中的输出如下:Ohe字符串是:I(而不是字符串是:s-无论s是
printf("\nThe string is: %s\n",s);
屏幕中的输出如下:Ohe字符串是:I(而不是字符串是:s-无论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");
}
#包括
#包括
字符*交替(字符c1、字符c2、整数n)
{
int i;
char*s;
s=(char*)malloc((n+1)*sizeof(char));
如果(s==NULL)
{
puts(“无法分配内存!”);
出口(1);
}
对于(i=0;i删除位于
for(i=0;i<n;i++);
{
for(i=0;i删除for循环语句旁边的分号:
for(i=0;i<n;i++);
for(i=0;i您是否已尝试在调试器中运行它?请逐步运行它以检查所有功能是否正常。此外,您还应检查scanf
的返回值以查看它是否成功。您不需要在C程序中强制转换malloc()
的返回值。以及sizeof(char)<代码> >代码> 1代码>代码> @ CalLNORM感谢提示!我们的教授告诉我们这样做(类型转换),以便代码与C和C++编译器兼容。我上学期犯了这个错误大概是一千次,我一直这样做!我已经检查过代码很多次了,但是我没有注意到!谢谢!
for(i=0;i<n;i++);
{
if(i%2==0)
s[i]=c1;
else
s[i]=c2;
}
for(i=0;i<n;i++)
{
}
{
if(i%2==0)
s[i]=c1;
else
s[i]=c2;
}