簡體   English   中英

如何掃描整數'n',然后在c中聲明一個array [1000] [n]?

[英]How to scan an integer 'n' and then declare an array[1000][n] in c?

當我嘗試掃描整數n並聲明一個數組時,我無法獲取正確的輸出,而在調試它並打印該數組的元素時,我得到一個錯誤:無法對不完整的類型執行指針數學運算,請嘗試將其轉換為已知的類型,或void *

#include <stdio.h>
int main()
{
    int n,i=0,j=0,k=0;
    scanf("%d",&n);
    char string[10000];
    scanf("%s",string);
    char a[1000][n];

    while(isalnum(string[i])!=0)
    {
        for(j=0;j<n;j++)
        {
            a[k][j]=string[i];
            i++;
        }
        k++;
    }

    i=0;
    for(j=0;j<n;j++)
    {
        while(isalnum(a[i][j])!=0)
        {
            printf("%c",a[i][j]);
            i++;
        }
    }
    printf("\n");
    return 0;
}
while(isalnum(string[i])!=0)
    {
      for(j=0;j<n;j++)
      {
        a[k][j]=string[i];
        i++;
      }
      k++;
    }

在此循環中有一個錯誤, while條件正在檢查isalnum(string[i] != 0) ,而while循環內部有一個for循環,其中i正在遞增。 僅僅因為您沒有得到正確的輸出,您似乎就認為創建數組引起了問題。 但是數組創建很好。 實現您試圖做的事情是錯誤的,這是您的邏輯。

如果只想打印字母數字字符而忽略其余字符,則可以如下所示:

#include <stdio.h>
int main()
{
   int i=0,k=0;
   char s[10000];
   char a[10000];
   scanf("%s",s);

   while(s[i] != '\0')
   {   
      if(!isalnum(s[i]))
      {   
         i++;
         continue;
      }   
      else
         a[k++] = s[i];
      i++;
   }   
   a[k] = '\0';
   printf("%s\n",a);
   return 0;
}

暫無
暫無

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

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