![](/img/trans.png)
[英]How to input n strings in C (n is entered by the user) without allocating n spaces?
[英]How to define a variable “N” type in C when N it is an input to C and its also defined by an input function( N will prompt the user for input)
我對編程還是很陌生,對 C 編程還是很陌生,所以如果我的問題看起來很荒謬,請原諒我。
我正在學習函數和 function 調用,我正在嘗試跟隨講師正在做的事情,但有一點補充。 導師做了以下事情:
我在嘗試着:
我正在使用的 C(c99) 有一個庫 cs50.h(來自在線課程 cs50),它提供了獲取 integer 輸入的代碼。 經過搜索和嘗試后,我已成功完成如下:
包含 cs50 庫后 int N = get_int("多少咳嗽") 咳嗽 (N)
還有咳嗽(get_int(“咳嗽多少次”))
我只是想知道為什么我不能在 C 中成功使用以下代碼而不會出錯。 為什么不能從 function 生成 N?
我得到的錯誤是---使用未聲明的標識符'N'
void cough(int N);
int main(void)
{
cough(N);
}
void cough(int N)
{
N = get_int("How many coughs?\n");
for (int i = 0; i < N; i++)
{
printf("cough\n");
}
}
感謝您閱讀長篇故事並提供指導。
我只是想知道為什么我不能在 C 中成功使用以下代碼而不會出錯。
使用未聲明的標識符“N”
因為在
int main(void)
{
cough(N);
}
N沒有在main中定義為局部變量,也不是全局變量,因此您無法編譯代碼
但應該在程序以提示符啟動時獲取,例如“咳嗽多少次?”
所以
N = get_int("How many coughs?\n");
必須移入主
最后你想要這樣的東西:
void cough(int N);
int main(void)
{
cough(get_int("How many coughs?\n"));
return 0;
}
void cough(int N)
{
for (int i = 0; i < N; i++)
{
printf("cough\n");
}
}
請注意,您的printf
打印一個常量字符串,因此您可以將其替換為puts("cough");
這有點快,因為在這種情況下printf
搜索“%”一無所獲
你可以試試這個,但我沒有使用get_int()
void cough(int N);
int main(void)
{
int N = 0;
scanf( "%d", &N );
cough(N);
}
void cough(int N)
{
printf("How many coughs?\n");
for (int i = 0; i < N; i++)
{
printf("cough\n");
}
}
當您在 C 中編寫程序時,您只能使用之前定義的標識符......或者,當然,當您定義它們時。
因此,讓我們逐行處理您的代碼
void cough(int N);
void
已定義:語言關鍵字
cough
,這里是(暫時)定義的
int
已經定義:一個語言關鍵字N
它被(暫時)定義在這里。 此定義在下一個右括號之前有效,因為它是一個參數定義
int main(void) {
main
在這里定義
cough(N);
cough
是(暫時)定義的,所以沒關系:編譯器知道它是一個 function,以前的暫定定義和實際定義不能改變它。 N
OOPS,,: 之前未定義,不是關鍵字,編譯器因錯誤而停止:)
不過,您可以將cough()
定義為不使用 arguments
#include <stdio.h>
#include "cs50.h"
int cough(void);
int main(void)
{
cough();
}
void cough(void)
{
int N = get_int("How many coughs?\n");
for (int i = 0; i < N; i++)
{
printf("cough\n");
}
}
您需要在main
中定義N
(順便說一下,它完全獨立於N
in cough
。例如:
int main(void)
{
int N = 5;
cough(N);
{
作為替代方案,您可以使用cough(5)
或將N
定義為全局。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.