
正文
linux转换字符命令 linux更换字符集
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
linux下如何将整形转化为字符串
有如下两种常用方法。
一、可以通过调用C库函数itoa实现。
1 原型。
char*itoa(int value,char*string,int radix);
2 头文件。
stdlib.h
3 功能。
将value的值,转换为字符串,并存到string中,如果转化后的字符串长度超过radix,那么只存radix位。
4 样例。
int i=1234;
char buf[10];
itoa(i, buf, 10);
执行后buf内容为字符串"1234"。
二、通过sprintf格式化输出到字符串中。
itoa并不是C语言标准库函数,所以并不是每个平台均支持该函数。当不支持时,可以用sprintf函数来达到同样效果。
1 原型。
int sprintf( char *buffer, const char *format, [ argument] … );
2 头文件。
stdio.h
3 功能。
类似于printf,根据格式化字符串format,将后续参数列表中的参数逐个输出。不过输出目标不是标准输出终端,而是字符串buffer。
4 样例。
int i=1234;
char buf[10];
sprintf(buf,"%d",i);
执行后buf内容同样为字符串"1234"。
相关问答
Q1: 如何在Linux系统实现字符编码转换
Linux下提供了iconv实现这一功能,在Linux 的 shell 环境下,iconv用法如下:
iconv -f fromconde -t tocode
-f: 指定需要转换的文本编码
-t: 指定目标文本编码
我们也可以用 -l 列举出所有已知的字符编码集合
iconv -l
具体用法可以通过帮助函数 iconv --help来详细了解
另外,我们也可以在程序中直接使用该函数实现文本的编码转换
#ifndef __CODE_CONVERTER
#define __CODE_CONVERTER
#ifdef WIN32
#include windows.h
#else
#include iconv.h
#endif
class CodeConverter
{
private:
#ifndef WIN32
iconv_t m_cd;
#endif
const char* m_pszFromCode;
const char* m_pszToCode;
public:
CodeConverter()
{
m_pszFromCode = NULL;
m_pszToCode = NULL;
#ifndef WIN32
m_cd = 0;
#endif
}
~CodeConverter()
{
#ifndef WIN32
iconv_close(m_cd);
#endif
}
bool Initialize(const char *pszToCode, const char *pszFromCode);
size_t Convert(char* inBuf, size_t inBytesLeft, char* outBuf, size_t outBytesLen);
};
#endif
#include string.h
#include stdlib.h
#include stdio.h
#include "code_converter.h"
#include errno.h
bool CodeConverter::Initialize(const char* pszToCode, const char* pszFromCode)
{
if(pszFromCode == NULL || pszToCode == NULL) return false;
m_pszFromCode = pszFromCode;
m_pszToCode = pszToCode;
#ifndef WIN32
m_cd = iconv_open(m_pszToCode,m_pszFromCode);
if(m_cd == (iconv_t)-1)
{
printf("cannot open iconv descripter\n");
return false;
}
#endif
return true;
}
size_t CodeConverter:: Convert(char* inBuf, size_t inBytesLeft, char* outBuf, size_t outBytesLen)
{
int nRealLen = 0;
#ifdef WIN32
if(stricmp(m_pszFromCode,"UNICODE") == 0)
{
nRealLen = WideCharToMultiByte(CP_ACP,0,(PWCHAR)inBuf, inBytesLeft, (PCHAR)outBuf, outBytesLen,NULL,NULL);
}
if(stricmp(m_pszFromCode,"gb2312") == 0)
{
nRealLen = MultiByteToWideChar(CP_ACP,0,(PCHAR)inBuf,inBytesLeft,(PWCHAR)outBuf, outBytesLen);
}
#else
size_t outBytesLeft = outBytesLen;
size_t ret = 0;
while (1)
{
ret = iconv(m_cd, inBuf, inBytesLeft, outBuf, outBytesLeft);
if (ret == 0) break;
if (ret == (size_t)-1)
{
printf("iconv error aaa: %s\n",strerror(errno));
return -1;
}
inBuf++; inBytesLeft--;
}
nRealLen = outBytesLen-outBytesLeft;
outBuf[nRealLen]=0;
#endif
return nRealLen;
}
Q2: linux图形界面怎么转换字符界面
字符界面转为图形界面的命令是startx,如果你想将系统启动默认为图形界面,那么你需要修改/etc/inittab文件的运行级别设定为5,即id后面的数字,3代表字符界面.
Q3: linux替换字符串的几种方法
(1)VIM替换字符串方法
1. 基本替换
:s/str1/str2/ 替换当前行第一个str1为str2
:s/str1/str2/g 替换当前行所有str1为str2
:n,$s/str1/str2/ 替换第 n 行开始到最后一行中每一行的第一个str1为str2
:n,$s/str1/str2/g 替换第 n 行开始到最后一行中每一行所有str1为str2
(n 为数字,若 n 为 .,表示从当前行开始到最后一行)
:%s/str1/str2/(等同于 :g/str1/s//str2/) 替换每一行的第一个str1为str2
:%s/str1/str2/g(等同于 :g/str1/s//str2/g) 替换每一行中所有str1为str2
2. 可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符
:s#str1/#str2/# 替换当前行第一个str1/ 为str2/
:%s+/str11/str12/+/str21/str22+ (使用+ 来 替换 / ): /str11/str12/替换成/str21/str22/
3. 文件中删除^M
问题描述:对于换行,Windows下用回车换行(0A0D)来表示,Linux下是回车(0A)来表示。这样,将window上的文件拷到Unix上用时,总会有个^M,请写个用在Unix下的过滤Windows文件的换行符(0D)的shell或c程序。有两种方法可以完成此目的:
(1)使用命令:cat oldfilename | tr -d “^V^M” newfilename
(2)使用命令:sed -e “s/^V^M//” oldfilename newfilename
需要注意的是在1、2两种方法中,^V和^M指的是Ctrl+V和Ctrl+M。你必须要手工进行输入,而不是粘贴。
在vim中处理:首先使用vim打开文件,然后按ESC键,接着输入命令:
:%s/^V^M//
:%s/^M$//g
如果上述方法无用,则正确的解决办法是:
(1) tr -d "\r" old_file_name new_file_name 或者 cat oldfilename | tr -d "\r" new_file_name
(2) tr -d "\015" old_file_name new_file_name或者 cat oldfilename | tr -d "\015" new_file_name
strings AB
4. 其它技巧
利用 :s 命令可以实现字符串的替换。具体的用法包括:
:s/str1/str2/ 用字符串 str2 替换行中首次出现的字符串 str1
:s/str1/str2/g 用字符串 str2 替换行中所有出现的字符串 str1
:.,$ s/str1/str2/g 用字符串 str2 替换正文当前行到末尾所有出现的字符串 str1
:1,$ s/str1/str2/g 用字符串 str2 替换正文中所有出现的字符串 str1
:g/str1/s//str2/g 功能同上
从上述替换命令可以看到:g 放在命令末尾,表示对搜索字符串的每次出现进行替换;不加 g,表示只对搜索字符串的首次出现进行替换;g 放在命令开头,表示对正文中所有包含搜索字符串的行进行替换操作。
(2)sed命令替换字符串
sed替换的基本语法为:
代码如下:
sed
's/原字符串/替换字符串/'
单引号里面,s表示替换,三根斜线中间是替换的样式,特殊字符需要使用反斜线”\”进行转义,但是单引号”‘”是没有办法用反斜线”\”转义的,这时候只要把命令中的单引号改为双引号就行了,例如:
代码如下:
sed "s/原字符串包含'/替换字符串包含'/"
//要处理的字符包含单引号
命令中的三根斜线分隔符可以换成别的符号,这在要替换的内容有较多斜线是较为方便,只需要紧跟s定义即可,例如换成问号”?”:
代码如下:
sed 's?原字符串?替换字符串?'
//自定义分隔符为问号
可以在末尾加g替换每一个匹配的关键字,否则只替换每行的第一个,例如:
代码如下:
sed 's/原字符串/替换字符串/'
//替换所有匹配关键字
上箭头”^”表示行首,美元”$”符号如果在引号中表示行尾,但是在引号外却表示末行(最后一行),这里犯二了,搜了半天哪个符号表示首行,半天才想起来,首行就是数字”1″啊.那么在行首和行尾添加字符串就是把行尾和行首替换,例如:
代码如下:
sed 's/^/添加的头部/g' //在所有行首添加
sed
's/$/添加的尾部/g' //在所有行末添加
sed '2s/原字符串/替换字符串/g' //替换第2行
sed
'$s/原字符串/替换字符串/g' //替换最后一行
sed '2,5s/原字符串/替换字符串/g' //替换2到5行
sed
'2,$s/原字符串/替换字符串/g' //替换2到最后一行
替换样式可以多个在同一条命令中执行,用分号”;”分隔,例如:
代码如下:
sed 's/^/添加的头部/g;s/$/添加的尾部/g'
//同时执行两个替换规则
sed处理过的输出是直接输出到屏幕上的,要保存可以将输出重定向,或者使用参数”i”直接在文件中替换:
代码如下:
sed -i 's/原字符串/替换字符串/g' filename
//替换文件中的所有匹配项
Q4: linux怎么进入字符命令界面?
linux进入字符命令界面方法如下:
一、系统不在虚拟机中的情况
使用ctrl+alt+F1~6切换到命令行界面;ctrl+alt+F7切换到图形界面。
二、系统在虚拟机中的情况
Ctrl+Alt+shift+F1~6切换到命令行界面;使用Alt+F7返回到图形界面。
(注:以上方法切换后,图形界面并没有关闭)
三、命令模式修改
打开终端,输入init3,回车即可。
init后数字的含义:
0-halt(DoNOTsetinitdefaulttothis) //停机(不要把initdefault设置为零为0,因为这样会使Linux无法启动)
1-Singleusermode //单用户模式,就像WinXP下的安全模式。
2-Multiuser,withoutNFS(Thesameas3,ifyoudonothavenetworking) //多用户,但没有NFS。
3-Fullmultiusermode //完全多用户模式,标准的运行极,即命令行界面。
4-unused //一般不用,但在一些特殊情况下可以用他来做一些事情。
5-X11 //选择此项,系统在登录时将进入图形化登录界面。
6-reboot(DoNOTsetinitdefaulttothis) //重新启动(不要把initdefault设置为6,因为这样会使Linux不断重新启动)
(注:以上方法切换后,图形界面完全关闭。如果窗口中有文件未保存,将丢失。用init5可以回到图形界面,但原来的进程已死。用startx则在当前级别3上加载图形界面)
四、每次启动直接进入字符界面,则要修改etc/inittab文件,将启动级别由5改为3即可。
终端以root身份执行vi/etc/inittab打开inittab文件,编辑后保存重启即可。
Q5: linux shell 脚本中怎样将字符串转化为命令
1.没必要这样。因为shell脚本执行的时候是在一个子shell中执行的linux转换字符命令,即使你成功的将字符串转化为命令linux转换字符命令,你也不会因为脚本执行“cd /home”而在本shell中切换到/home下。……额,是不是说的绕linux转换字符命令了。。。
2.倘若按照你的想法,那就是一个新shell了。话句话说,你觉得像bash、sh、csh等等这些shell难道仅仅是一个脚本吗?再换句话说,难道bash仅仅是在sh的一个脚本吗?……
=====
3.假如真的需要在使用脚本的时候让使用者自己输入需要脚本执行的命令,只能用选择语句或者判断语句来匹配使用者的输入。因为使用者在使用脚本时输入给脚本的“命令”从根本上讲并不是命令,对脚本而言它仅仅是一个执行过程中的“选项”。好比“(1)删除(2)增加(3)退出... 请输入选项linux转换字符命令:”这种最平常的方式,拓展开也就是把提示去掉变成“请输入命令:”,而在使用者输入之后脚本用 if 删除==输入字符串 then 。。。这样的方式来满足需求。
======
没了。
linux转换字符命令的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux更换字符集、linux转换字符命令的信息别忘了在本站进行查找喔。








