为什么输出有问题
本帖最后由 iloveass 于 2023-3-22 13:30 编辑我输入Hello world,
应该输出Hello
为什么会输出ello
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int read_line(char str[], int n);
int main() {
char message;
printf("Enter a message: ");
read_line(message, 32);
printf("Message: %s\n", message);
}
int read_line(char str[], int n) {
int i = 0;
char ch;
while (isspace(getchar())) /* (a) */
;
while ((ch = getchar()) != '\n' && !isspace(ch) && i < n) /* (b) & (d) */
str = ch;
if (ch == '\n' && i < n - 1) /* (c) */
str = '\n';
str = '\0';
return i;
} 求助 int read_line(char str[], int n) {
int i = 0;
char ch;
//////////////////////while (isspace(getchar())) /* (a) */
;
while ((ch = getchar()) != '\n' && !isspace(ch) && i < n) /* (b) & (d) */
str = ch;
if (ch == '\n' && i < n - 1) /* (c) */
str = '\n';
str = '\0';
return i;
} 本帖最后由 isdkz 于 2023-3-21 18:41 编辑
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int read_line(char str[], int n);
int main() {
char message;
printf("Enter a message: ");
read_line(message, 32);
printf("Message: %s\n", message);
}
int read_line(char str[], int n) {
int i = 0;
char ch;
/* --------------------------------------------------------问题出在这,这里的 getchar() 消耗掉了一个字符
while (isspace(getchar()))
;
------------------------------------------------------- */
while ((ch = getchar()) != '\n' && !isspace(ch) && i < n) /* (b) & (d) */
str = ch;
if (ch == '\n' && i < n - 1) /* (c) */
str = '\n';
str = '\0';
return i;
} 我输入一堆空格然后是Hello world
也想输出Hello
怎么办 解决了,代码如下
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int read_line(char str[], int n);
int main(){
char message;
printf("Enter a message: ");
read_line(message, 32);
printf("Message: %s\n", message);
}
int read_line(char str[], int n) {
int ch, i = 1;
while (isspace(ch = getchar()));
str = ch; //把空格后的第一个字符单独赋给str第一个元素
while (i < n && (ch = getchar()) != '\n' && !isspace(ch))
str = ch;
if (ch == '\n' && i < n - 1)
str = '\n';
str = '\0';
return i;
}
iloveass 发表于 2023-3-21 19:04
解决了,代码如下
把帖子类型改掉
页:
[1]