将字符串转换为字符数组

目标

我正在尝试将用户输入的至少17字符转换为数组。比如说,用户的输入是25281582252,通过使用x = arr[1]5被分配给变量x我还没有成功。我得到一个"undefined reference to log10"gccLinux上。这是我的代码

#include <stdio.h>
#include <math.h>

int main(){
    int x;

    printf("enter x");
    scanf("%d",x);
    int numOfDigits = log10(x) + 1;
    char* arr = calloc(numOfDigits, sizeof(char));
    for(int i=0;i<numOfDigits;i++,x/=10){
        arr[i] = x % 10;
    }

    printf("first num: %d",arr[0]);
    return 0;
}

提前致谢

SG7

我得到一个 "undefined reference to log10"

您需要使用-lm.

但这只是一个开始。修复以下问题:

a) 如果您希望字符串正确终止,则为空字符串终止符分配额外的字符。

b)scanf("%d",x);需要指向x

c)int变量不能存储17数字,使用long int

d) 您不能存储int到 char 中array,您的数字必须转换为ASCIIchar。

f)您的算法以相反的顺序存储字符,您需要反转您的字符串

e) 必须释放分配的内存。

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

void reverse_in_place(char * str, size_t len) {
   size_t i, j;
   for (i = 0, j = len - 1; i < j ; i++, j--) {
        char a = str[i];
        char z = str[j];
        str[i] = z;
        str[j] = a;
   }
}

int main(void){
    long int x;
    int i;

    printf("enter x:\n");
    scanf("%ld",&x);

    int numOfDigits = (int) (log10(x) + 1);

    printf("numOfDigits =  %d\n", numOfDigits);

    char* arr = calloc(numOfDigits + 1, 1);

       for(i=0; i < numOfDigits; i++){
            arr[i] = (char) ((x % 10) + '0');
            printf(" %c", arr[i]);
            x /= 10;
    }

    reverse_in_place(arr,strlen(arr));        
    printf("\nFirst num is: %c in string %s",arr[0], arr);

    free(arr); 
    return 0;
}

输出:

enter x:                                                                                                                                    
451236789012345678                                                                                                                          
numOfDigits =  18                                                                                                                           
 8 7 6 5 4 3 2 1 0 9 8 7 6 3 2 1 5 4                                                                                                        
First num is: 4 in string 451236789012345678

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将数组转换为字符串

来自分类Dev

将字符串转换为数组

来自分类Dev

将数组转换为字符串

来自分类Dev

将字符转换为字符串(无数组)?

来自分类Dev

将字符串转换为字符数组

来自分类Dev

将字符数组转换为字符串

来自分类Dev

如何将字符从数组转换为字符串

来自分类Dev

将字符串转换为数组字符

来自分类Dev

如何将字符数组转换为字符串

来自分类Dev

将字符串转换为字符数组转换为int数组转换为链表

来自分类Dev

从字符数组转换为字符串

来自分类Dev

将字符串数组转换为整数数组

来自分类Dev

将字符串数组转换为整数数组

来自分类Dev

将字符串数组转换为对象数组

来自分类Dev

Ruby将字符串数组转换为数组对象

来自分类Dev

将JSON数组转换为bash字符串数组

来自分类Dev

将整数数组转换为字符串数组

来自分类Dev

将包含数组的字符串转换为实际数组

来自分类Dev

将字符串数组转换为长数组

来自分类Dev

将jQuery数组字符串转换为PHP数组

来自分类Dev

将数组形式的字符串转换为实际数组

来自分类Dev

将字符串数组转换为char数组

来自分类Dev

将字符串格式的数组转换为javascript数组

来自分类Dev

将字符串数组转换为整数数组

来自分类Dev

将单词从字符串数组转换为char数组

来自分类Dev

将数组中的数组转换为字符串

来自分类Dev

将jQuery数组字符串转换为PHP数组

来自分类Dev

将字符串数组转换为多维数组

来自分类Dev

将字符串化数组转换为实际数组