什么';这个C代码怎么了?(未按预期工作)

什么';这个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是

我还有一个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是什么-) 以下是.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;
 }