我试图将一个字符串读入一个由用户选择的长度的字符数组。问题是 getchar() 不会停止阅读,直到用户根据我的代码按 Enter 手动输入换行符。我已经阅读了其他人的帖子,我明白为什么我不能这样做,这与我的作业讲义完全矛盾。
int chPrompt(int nchars);
void strInput(char str[], int nchars);
int main(void) {
int nchars = chPrompt(nchars);
char str[nchars];
strInput(str, nchars);
return 0;
}
int chPrompt(int nchars) {
printf("How many chars do you need to input? >");
return scanf("%i", &nchars);
}
void strInput(char str[], int nchars) {
int i = 0;
while((str[i] = getchar()) != '\n') {
if(i > nchars-1)
break;
i++;
}
str[i] = '\0';
//Troubleshooting
printf("%s %d", str, strlen(str));
}
Run Code Online (Sandbox Code Playgroud)
这是讲义上的内容:
使用我们讨论过的技术从键盘输入一个字符串(包括空格)(使用 getchar(),而不是 gets() 、 …