解析c中的char字符串,得到感叹号后面的数字

问题描述:

如果我有类似的东西!23我怎样才能解析它以得到数字部分?解析c中的char字符串,得到感叹号后面的数字

输入:23 输出:23

输入:! 输出:错误

输入:23eds3 输出:错误

这是我得到的数字位的方法。但由于某种原因,strcpy正在搞乱我的数组,我在其中存储了一些数据,它删除了数组中的第一个元素。

if (args[0][0] == '!'){ 
    char str_index[1]; 
    strcpy(str_index, &args[0][1]); 
    int index = atoi(str_index); 
} 

而且我没有用C编程的很多,这只是我的第二个方案C.

+2

你到目前为止尝试过什么?你对c字符串解析有什么了解可能是相关的?有很多方法可以解决您的问题,但我们希望能够帮助您了解解决方案,而不仅仅是为您提供代码。 –

+2

请花一些时间阅读[帮助页面](http://*.com/help),特别是名为[“我可以询问什么主题?”](http://*.com/help /主题)和[“我应该避免问什么类型的问题?”](http://*.com/help/dont-ask)。还请[参观](http://*.com/tour)和[阅读如何提出好问题](http://*.com/help/how-to-ask)。最后,请学习如何创建[最小,完整和可验证示例](http://*.com/help/mcve)。 –

+0

我还建议您阅读[一本好的初学者手册或两本书](http://*.com/questions/562303/the-definitive-c-book-guide-and-list)。如果您已经了解基础知识,那么请专注于有关输入和输出以及指针和数组的章节。除此之外,请阅读['strtol'](http://en.cppreference.com/w/c/string/byte/strtol)函数。书籍和['strtol'](http://en.cppreference.com/w/c/string/byte/strtol)函数的知识就是您完成此任务所需的全部知识。 –

一些提示,但不打算写的代码为您提供:

使用String库函数,如strchr来查找'!'。然后使用strtod将字符串转换为数字。查看strtod的输出以查看它是否有错误或者是否有字母。

或者你可能想用整数代替strtol