0

我知道 getline 是 C++ 标准,但我需要读取一行数字:

123856

并将其保存到数组中。但是如何在给定(作为输入)数字之间没有空格的情况下做到这一点?我希望用户输入是:

123856(没有空格),然后将其保存到一个数组(n 元素数组)中,之后,我希望我的数组看起来像这样:

array[0] = 1;
array[1] = 2;
array[2] = 3;
array[3] = 8;
array[4] = 5;
array[5] = 6;

但是如何在C中制作它,没有getline

这不是我想要的:

#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <stdbool.h>

int main(int argc, char **argv)
{
    int t[4];
    int i;

    for(i=0; i<4; i++)
        scanf("%d", &t[i]);
    for(i=0; i<4; i++)
        printf("%d\n", t[i]);

    return 0;
}
4

6 回答 6

3

如果我理解你是正确的,下面应该这样做:

  1. 阅读整行
  2. 只要你得到数字或字符串结束就循环遍历字符串
  3. 对于每个数字,将它的值放在数组中并将索引增加 1
于 2013-01-23T14:04:51.217 回答
3
while( ( c = getchar()) != EOF  &&  c != '\n' &&  i < max ) {
    /* If desired, add check for value outside of 0-9 */
    array[ i++ ] = c - '0';
    ...
}
于 2013-01-23T14:04:58.383 回答
1
char arr[] = "1234567";
int intarr[10];

int count = 0;
for (char* ptr = arr; *ptr; ptr++) {
  intarr[count] = *ptr - '0';
  count++;
}
于 2013-01-23T14:05:58.437 回答
0

好的,不使用任何字符串。

int digits = 123856;
int numofdigits = 1 + floor(log10(digits));

int digits_arr[numofdigits];
int i;
for(i = numofdigits-1; i >= 0; i--) {
    digits_arr[i] = (int)floor(digits / pow(10, i)) % 10;
}
于 2013-01-23T14:31:49.060 回答
0

尝试这个

#include <stdio.h>
#include <string.h>

 main (int argc, char *argv[])
{

    FILE *f;


    int i=0;
    int j=0;
    char output[100];
    char* output1[100];
    char string[100];
    char delims1[] = " ";
    char delims2[] = "*";
    char* result = NULL;
    char* result3 = NULL;
    int num;



//for (j=0; j<2; j++)
//{
    //printf("%s",delims9[6]);
//}

f = fopen("text.txt","r");
   //
    while( fgets(string,sizeof(string),f) )
    {

        result = strtok( string, delims1 );

        while( result != NULL )
        {
            output1[i]=result;
          printf("%s\n",output1[i]);
          result = strtok( NULL, delims1 );
            i++;

        }

    for (num = 0; num < 100; i++ )      //
    {                                   // Error On this array
        printf("%s\n", output1[i]);     //
    }                                   //


    }
printf("\n%d",i/3+1);



    return 0 ;
}
于 2013-01-23T14:09:03.110 回答
-1

试试下面的链接......这里问了同样的问题并得到解决方案......

将整数转换为数组

char * convertNumberIntoArray(unsigned int number) {
    unsigned int length = (int)(log10((float)number)) + 1;
    char * arr = (char *) malloc(length * sizeof(char)), * curr = arr;
    do {
        *curr++ = number % 10;
        number /= 10;
    } while (number != 0);
    return arr;
}
于 2013-01-23T14:14:12.237 回答