c语言整数转字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言整数转字符串相关的知识,希望对你有一定的参考价值。

#include<stdio.h>
main()
int n,j,k,i,p=0;

char a;

printf("输入一个数");
scanf("%d",&n);

while(n)
k=n%10;
p++;
n=n/10;

for(i=0;i<=p;i++)
a[i]=k+'0';

printf("%s",a);

我写的程序是 : 输入一个数,把每位变成字符存到字符串。
提取数字每位数应该没什么问题 但是变成字符存到字符串里不太会 请问如何改

而且我写的就算能输出好像也是逆序

可用递归方式逐位输出;可用一个中间数组保存结果,然后将结果倒序存放到输出数组;可先计算位数,然后逐位倒序存放;也可直接倒序输出结果等。 参考技术A int iValue;//整型数 char sz[10];//字符串 sprintf(sz, "%d", iValue);/追问

还是不行。。能帮我改一下上面的程序吗

C语言中字符串的逆序字符串转整数整数转字符串自定义字符串操作(strcpystrlenstrcatstrcmp)

I.说明

作者:WXP(翱翔云端的鸟)
联系方式:328452854@qq.com (联系请注明CSDN)
申明:个人原创,转载请先经过本人同意!
要说的话:个人水平有限,写之前也看过许多大神的博客,不足之处,还请指正!有疑问欢迎大家联系我交流探讨!


II.字符串逆序

环境:VS2017 C/C++ code
从键盘输入一个字符串,实现逆序操作。
看到这个的第一反应想想应该很简单,但是在写的过程中却碰到很多问题,很是头疼

错误示范1:

char *input = NULL;
printf("Please Input a string:");
scanf("%s",input);

错误示范2:

char *input = "";
printf("Please Input a string:");
scanf("%s",input);
这两种错误都是在输入字符串之后回车就报异常了

错误示范1:这里试图去写地址0(NULL),这个地址是操作系统不允许写入的,所以报错

错误示范2:这里input指向的是空字符串,空字符串是保存在只读空间的,对只读空间写入从而异常

两者还有一个共同的问题,这里虽然定义了字符指针变量input,但是并没有给它分配空间然后直接去写


正确的示范:

char *input = NULL;
input = (char *)malloc(100);
printf("Please Input a string:");
fgets(input,100,stdin);

当然也可以直接使用一个字符数组,与malloc一样都是为其分配空间

注意这里使用的fgets,而不是用的scanf,原因是scanf作输入时,要是中间输入了空格,它会以为字符串结束,空格后的字符作为下一个输入处理了,而fgets不会,此函数用作从文件中读入字符串,也可以从屏幕录入

函数定义:fgets(char *s, int size,FILE *stream)

用来从所指的文件中读入字符到指针s指向的空间,直到出现换行字符,或者是读到文件结束(size-1)个字符

当从屏幕录入时,第三个参数使用 stdin 

完整的示例:

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

void swap(char *p, char *q)

	char temp = *p;
	*p = *q;
	*q = temp;


int main(void)

	int i;
	char *input = NULL;
	
	input = (char *)malloc(100);
	printf("Please Input a string:");
	fgets(input,100,stdin);
	int len = strlen(input);//求字符串长度
	len = len - 1; //去掉回车
	printf("strlen = %d\\n", len);
	printf("%s\\n", input);
	
	for (i = 0; i < len / 2; i++)
	
		swap(&input[i], &input[len - i]);
	

	printf("%s\\n",input);
	while(1);
上述代码在VS2017上验证过了,即使包含空格字符也能够逆转字符串




以上是关于c语言整数转字符串的主要内容,如果未能解决你的问题,请参考以下文章

C语言 把char 型 或者 整数转化成二进制 要怎么转

C语言itoa()函数和atoi()函数详解(整数转字符C实现)

C语言中字符串的逆序字符串转整数整数转字符串自定义字符串操作(strcpystrlenstrcatstrcmp)

C语言中字符串的逆序字符串转整数整数转字符串自定义字符串操作(strcpystrlenstrcatstrcmp)

C语言中字符串和整数小数相互转换的函数都有啥?

C语言atoi()函数(字符串转整数int类型)