C++ 通过while将用空格分隔的数字输入到数组里

#while在接收输入数字的用法
~~作为初学者一开始总是头痛要输入的数字分开保存在数组里,而又不想一遍又一遍的按回车键,而通过空格分隔输入就在输入多个数字时头痛。而下面就是通过基础的***while***和***gerchar()***来实现简单的数字空格分隔的输入,并将其保存在数组里。
~~其中重要的分别是***while***在未弹出循环时持续接收输入,而***getchar()***则是用于判定终止循环的条件。
~~以下是简单的接收5个用空格分隔的数字再将其输出:

#include <iostream>
using namespace std;

int main()
{
   
	int a[5];
	int k = 0;
	while (cin >> a[k])
	{
   
		k
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 下面是一个用 C 语言实现的函数,其可以将文件每一行中第一个空格前的字符串加入到一个字符串数组: ```c #include <stdio.h> #include <string.h> #define MAX_LINES 1000 #define MAX_LENGTH 100 void get_lines(char *lines[], int max_lines, char *line_storage); char *alloc(int n); int main() { char *lines[MAX_LINES]; char line_storage[MAX_LINES * MAX_LENGTH]; int num_lines = 0; get_lines(lines, MAX_LINES, line_storage); for (int i = 0; i < num_lines; i++) { printf("%s\n", lines[i]); } return 0; } void get_lines(char *lines[], int max_lines, char *line_storage) { char *line, *p; int c, len; int line_count = 0; line = alloc(MAX_LENGTH); p = line; while ((c = getchar()) != EOF) { if (c == '\n') { *p++ = '\0'; len = p - line; lines[line_count++] = strncpy(line_storage, line, len); line_storage += len; p = line; if (line_count >= max_lines) { break; } } else if (c == ' ') { *p++ = '\0'; len = p - line; lines[line_count++] = strncpy(line_storage, line, len); line_storage += len; p = line; } else { *p++ = c; } } if (line_count > 0) { *p++ = '\0'; len = p - line; lines[line_count++] = strncpy(line_storage, line, len); } *p = '\0'; } char *alloc(int n) { static char buf[10000]; static char *bufp = buf; if (buf + 10000 - bufp >= n) { bufp += n; return bufp - n; } else { return 0; } } ``` 该函数使用 `getchar()` 函数从标准输入读取字符,并使用 `alloc()` 函数动态地分配内存,以便存储每个字符串。在读取每个字符串时,函数会遇到空格或新行符。如果遇到空格符,该函数会将当前字符串添加到字符串数组中,并将指针移动到下一个位置。如果遇到新行符,函数会将当前字符串添加到字符串数组中,并将指针移动到下一个位置。如果字符串数组的容量达到最大值,则该函数将停止读取字符。最后,该函数将字符串数组的指针返回给主函数,以便打印它们。 ### 回答2: C语言实现函数将文件每一行的空格前的字符串加入到一个字符串数组,可以按照以下步骤进行实现: 1. 创建一个函数,命名为`getStringsFromFile`,该函数接受两个参数:文件名(包括路径)和字符串数组。 2. 在`getStringsFromFile`函数中,首先打开文件,可以使用`FILE*`类型的指针来表示文件。打开文件可以使用`fopen`函数,将文件名作为参数传入,同时需要检查文件是否成功打开。 3. 创建一个字符串变量,用来存储文件的每一行内容。可以使用`char`类型的数组,长度根据文件每行的最大长度来确定。 4. 创建一个循环,在循环中,使用`fgets`函数读取文件的每一行内容,并将其存储到刚才创建的字符串变量中,同时需要检查文件是否已经到达末尾。 5. 在循环中,使用`strtok`函数按照空格分隔字符串为若干个子串,并将每个子串存储到字符串数组中。可以使用`strtok(NULL, " ")`来遍历每个子串。 6. 在循环中,通过`strcpy`函数将每个子串复制到字符串数组中的一个元素。为了保证每个元素的空间足够,可以提前创建字符串数组时就根据文件行数和每行字符串的最大长度来确定。 7. 在循环结束后,通过`fclose`函数关闭文件。 8. 返回从文件中提取的字符串数量,以便外部程序可以使用。可以使用指针对数组进行操作,将字符串数量作为其中一个元素返回。 以上给出了一种实现思路,根据具体的需求和文件的结构可能需要做一些修改。 ### 回答3: 可以通过以下的C语言代码实现将文件每一行的空格前的字符串加入到一个字符串数组中: ```C #include <stdio.h> #include <stdlib.h> #include <string.h> void extractString(char *line, char **strArray, int *count) { char *token; token = strtok(line, " "); // 按空格分割字符串,获取第一个单词 while (token != NULL) { strArray[*count] = malloc(strlen(token) + 1); // 分配内存给字符串数组的元素 strcpy(strArray[*count], token); // 将单词复制到数组元素中 (*count)++; // 元素个数加1 token = strtok(NULL, " "); // 继续获取下一个单词 } } int main() { char fileName[] = "test.txt"; // 文件名 FILE *file = fopen(fileName, "r"); // 打开文件 if (file == NULL) { printf("无法打开文件:%s\n", fileName); return 1; } char line[256]; char *strArray[100]; // 存储字符串的数组 int count = 0; // 数组中元素的个数 while (fgets(line, sizeof(line), file)) { // 逐行读取文件内容 extractString(line, strArray, &count); // 提取行中的字符串 } fclose(file); // 关闭文件 // 打印存储的字符串 for (int i = 0; i < count; i++) { printf("%s\n", strArray[i]); } // 释放内存 for (int i = 0; i < count; i++) { free(strArray[i]); } return 0; } ``` 该程序中,我们首先定义了一个函数`extractString`来提取每一行中的字符串。这个函数使用`strtok`函数将一行根据空格进行分割,获取到分割后的每个字符串,并逐一将其存入字符串数组中。 在主函数中,我们首先打开文件,然后逐行读取文件内容。对每一行,调用`extractString`函数提取其中的字符串,并将其存入字符串数组中。 最后,我们打印出存储的字符串,并释放申请的内存。 请注意,以上代码中的文件名为"test.txt",需要根据实际情况修改。同时,为了简化示例代码,假设字符串数组的最大长度为100,可以根据需要进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值