gpt4 book ai didi

c - 使用 atoi 将 char 字符串标记为 int

转载 作者:行者123 更新时间:2023-12-02 05:26:22 24 4
gpt4 key购买 nike

我正在尝试获取用户输入:(1 345 44 23) 并将其转换为标记化的字符字符串,然后转换为整数。令人惊讶的是,对于我认为是一项常见任务的任务,我找不到太多帮助。

关于如何使用标记将 char 字符串转换为 in 字符串有什么想法吗?

我的程序在进行转换时崩溃(在标记化之后[我意识到这不是一个词])。

谢谢!

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#define StrSZE 81


void strInput (char str[], int maxChars);
void custatoi(char * tokenArray[], int * data, int numOfTok);


int main(int argc, char *argv[])
{
char str[StrSZE];
char* tokenArray;
int maxChars=StrSZE-1, cont=1, numOfToken=0, i=0;
int* data;


strInput(str, maxChars);


tokenArray = strtok(str, " \t");
while (tokenArray)
{
printf("token: %s\n", tokenArray);
tokenArray = strtok(NULL, " \t");
numOfToken++;
}


data = (int *) malloc(numOfToken * sizeof(int));

custatoi(tokenArray, data, numOfToken);

system("PAUSE");
return 0;
}



void strInput (char str[], int maxChars)
{
char garbage;
int k=0;

str[0]='\0';

printf("Please type a string of whole numbers (intigers).\n\n");

while ((k<80) && ((str[k] = getchar()) != '\n'))
k++;

/* Clears the keyboard buffer. */
if (k==80)
while((garbage = getchar()) != '\n')
;

/* Place null at the end of the line read in from user */
str[k]='\0';

printf("str after input is: %s\n\n", str);
}


void custatoi(char * tokenArray[], int * data, int numOfTok)
{
int i;

for (i=0; i < numOfTok; i++)
data[i] = atoi(tokenArray[i]);
}

最佳答案

我更正了您代码中的错误:main() 中存在一些错误,tokenArray 数据类型不正确。

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#define StrSZE 81


void strInput (char str[], int maxChars);
void custatoi(char* tokenArray[], int * data, int numOfTok);


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


int maxChars=StrSZE-1, cont=1, numOfToken=0, i=0;
int* data;
char* tokenArray[50]; // Declared correctly

strInput(str, maxChars);


tokenArray[i] = strtok(str, " \t"); // Also made a change here!
while (tokenArray[i])
{
printf("token: %s\n", tokenArray[i]);
i++;
tokenArray[i] = strtok(NULL, " \t");
numOfToken++;
}


data = (int *) malloc(numOfToken * sizeof(int));

custatoi(tokenArray, data, numOfToken);

printf("data\n");
for(i=0;i<numOfToken;i++){
printf(" %d\n",data[i]);

}

system("PAUSE");
return 0;
}



void strInput (char str[], int maxChars)
{
char garbage;
int k=0;

str[0]='\0';

printf("Please type a string of whole numbers (intigers).\n\n");

while ((k<80) && ((str[k] = getchar()) != '\n'))
k++;

/* Clears the keyboard buffer. */
if (k==80)
while((garbage = getchar()) != '\n')
;

/* Place null at the end of the line read in from user */
str[k]='\0';

printf("str after input is: %s\n\n", str);
}


void custatoi(char* tokenArray[], int * data, int numOfTok)
{
int i;

for (i=0; i < numOfTok; i++)
data[i] = atoi(tokenArray[i]);
}

关于c - 使用 atoi 将 char 字符串标记为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13024450/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com