簡體   English   中英

此C代碼有什么問題? (未按預期工作)

[英]What's wrong with this C code? (Not working as expected)

我的C課還有另一個練習。 該代碼不會崩潰,但無法按預期工作。 顯然我犯了一個我找不到的錯誤。 分配如下所示:用戶輸入兩個字符c1和c2以及一個整數n,您必須創建一個動態創建的函數並返回一個包含n個字符的字符串,例如:c1c2c1c2c1c2等。例如:c1 = a和c2 = s並且n = 4字符串是:asas

但是,我創建的數組不包含c1和c2,但是包含來自ASCII表的一些隨機字符。 再加上這里:

printf("\nThe string is: %s\n",s);

屏幕上的輸出是這樣的:字符串是:I(插入的字符串是:s-whatever s is-)這是.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");
}

先感謝您!

刪除 ;

for(i=0;i<n;i++);
{

它不屬於那里。

刪除您的for循環語句旁邊的分號:

 for(i=0;i<n;i++);

我刪除了分號並嘗試了您的代碼,並按預期打印了文本。

for循環旁邊的分號使它成為一個空循環,其后的語句只是部分作用域。 那是,

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;
 } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM