我对如何解析getline()中的行感到茫然。我想看一下该行中的每个字符。
因此,如果有人输入:“Hello”到stdin,我希望能够以这种方式访问char数组:
line[0] = 'H'
line[1] = 'e'
line[2] = 'l'
line[3] = 'l'
line[4] = 'o'
line[5] = '/0';
我看过getchar(),但我想尝试使用getline(),因为我觉得它更方便。我也查看了scanf(),但它跳过了空格,并且不允许我像getchar()或getline()那样解析输入。
这是一个简单的代码,尝试通过stdin获取一行的第一个char,但会导致seg错误:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int len;
int nbytes = 100;
char *line = (char *) malloc (nbytes + 1);
while(getline(&line, &nbytes, stdin) > 0){
printf("first char: %s", line[0]); //try and get the first char from input
/**
* other code that would traverse line, and look at other chars
*/
};
return 0;
}
感谢。
答案 0 :(得分:4)
使用%c
格式说明符打印单个字符。
代码
printf("first char: %s", line[0])
将尝试将line[0]
视为char数组的地址。如果您只想打印出第一个字符,请将其更改为
printf("first char: %c", line[0])
// ^
您可以在代码的其他部分考虑其他一些小的更改:
free(line)