c - 将单行用户输入分配给 C/CH 中的多维数组

标签 c multidimensional-array user-input scanf ch

我遇到的问题是我需要能够将单行用户输入的 2 个值存储到单个字符数组中。格式将是“input1 input2”,其中 input1 是一个字符串,如“C2”,input2 是一个整数或 double ,如“1.25”,用户将输入这些值,仅用一个空格分隔它们。 示例:

User Input
C2 1.25

另一件事是我使用的是 Ch 编程语言,它是 C 的超集和 C++ 的子集。到目前为止,我只是了解到某些 C 代码无法在我的 IDE (ChIDE) 中运行。我还没有学到太多c++。目前在我正在阅读的书中,我现在处于 Ch 和 C/C++ 之间的过渡点。

到目前为止,我已经尝试了几行代码,但我的书中没有在一行中扫描多个用户输入值的示例,在网上我发现这个 fgets 代码似乎可以工作,但我可以'让它与二维数组一起工作。

char userNoteName[15][15];
//15 is arbitrary, ideally I want to use variables
//and that the number of inputted values would be unknown.
printf("Enter notes one at a time, in the format A#4 3,\n");
printf("where the first string is the note, and the number\n");
printf("that follows is the duration.\n");
printf("Type Q when you are done entering notes.\n");
fgets(userNoteName,15,stdin);
printf("%s",userNoteName);

我也尝试过使用两个数组,因为我不完全理解 fgets 函数,而且我不认为我的项目需要它,因为它还没有出现在书中。

这是我最初的思路。

char userNoteName[2][2];
scanf("%s%s", &userNoteName[0][0]);
printf("%s\n", userNoteName);

尽管这是错误的,因为 scanf 的格式不正确。我想我需要找到一个更好的编码学习资源。即使在网上,我也在努力寻找与这个想法类似的东西。

最佳答案

我不知道 Ch,但这是你在 C 中的做法:

char userNoteName[3];
float userFloatValue;
scanf("%s %f", userNoteName, &userFloatValue);

%s 用于将单词作为字符串读取,而 %f 读取 float

请注意,为了保存 2 个字符的字符串,如 C2,变量必须声明为包含 3 个字符,以允许空终止符。如果 string1 可以更长,您需要声明适当大小的变量,只记得为 null 加 1。

关于c - 将单行用户输入分配给 C/CH 中的多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40310575/

相关文章:

c - 在 Pro*C 中处理 float

c - 设置 Spotify-API-服务器

JavaScript 二维数组未定义

c - 将C中的字符串拆分为单独的部分

调用的对象类型 'int' 不是 xcode 中的函数或函数指针

Java - 像二维数组一样填充多维(二维)ArrayList

c - C中多维字符串数组的内存溢出

c# - 如何在同一行中获取用户输入?

java - 识别 Java 扫描仪或控制台应用程序中的箭头键

java - 如何从文件中获取数组输入,对其进行排序并在同一文件中显示输出