在一个字母后扫描一个整数
Scan an int after a letter
我正在构建一个程序,遇到了一个小问题,但找不到解决方案。
所以我的目标是扫描某个字母,当扫描发生时,我只得到它前面的数字。这是代码:
#include <stdio.h>
int main(){
int pag = 1;
char *op = malloc(sizeof(char));
char* opt = malloc(sizeof(char));
printf("P -> Next\n");
printf("A -> Back\n");
printf("S <N> -> Jump to N\n");
printf("B -> Sair\n");
printf("\n");
printf("Insert option: ");
fgets(op, 4, stdin);
if(op[0] == 'S'){
opt = strsep(&op, " ");
pag = atoi(op);
}
printf("Page: %d\n", pag);
free(op);
free(opt);
}
例如,当我执行程序并选择选项“S 5”时,我的目标是获得“5”。问题是当我选择了一个多于 2 位数的数字时,例如,“S 12”给我的数字是“1”,而不是数字 12,我不知道是内存分配问题还是其他问题.
第一个:
char *op = malloc(sizeof(char));
char* opt = malloc(sizeof(char));
不会分配超过 1 个字节来存储您的输入字符串。
fgets(op, 4, stdin);
不会为以下字符串“S 12”读取足够的字符,因为长度参数值包括字符串空终止符。
尝试:
const int length= 5;
char *op = malloc(length);
char* opt = malloc(length);
和
fgets(op, length, stdin);
我正在构建一个程序,遇到了一个小问题,但找不到解决方案。 所以我的目标是扫描某个字母,当扫描发生时,我只得到它前面的数字。这是代码:
#include <stdio.h>
int main(){
int pag = 1;
char *op = malloc(sizeof(char));
char* opt = malloc(sizeof(char));
printf("P -> Next\n");
printf("A -> Back\n");
printf("S <N> -> Jump to N\n");
printf("B -> Sair\n");
printf("\n");
printf("Insert option: ");
fgets(op, 4, stdin);
if(op[0] == 'S'){
opt = strsep(&op, " ");
pag = atoi(op);
}
printf("Page: %d\n", pag);
free(op);
free(opt);
}
例如,当我执行程序并选择选项“S 5”时,我的目标是获得“5”。问题是当我选择了一个多于 2 位数的数字时,例如,“S 12”给我的数字是“1”,而不是数字 12,我不知道是内存分配问题还是其他问题.
第一个:
char *op = malloc(sizeof(char));
char* opt = malloc(sizeof(char));
不会分配超过 1 个字节来存储您的输入字符串。
fgets(op, 4, stdin);
不会为以下字符串“S 12”读取足够的字符,因为长度参数值包括字符串空终止符。
尝试:
const int length= 5;
char *op = malloc(length);
char* opt = malloc(length);
和
fgets(op, length, stdin);