C语言怎么实现字符串的任意输入
就是一定数组的时候不找到长度,根据输入的字符串长度来定。例如,用数组编写一个程序,实现顺便输入什么后面复制一边输出显示。。...
就是一定数组的时候不找到长度,
根据输入的字符串长度来定。
例如,用数组编写一个程序,实现顺便输入什么 后面复制一边输出显示。。 展开
根据输入的字符串长度来定。
例如,用数组编写一个程序,实现顺便输入什么 后面复制一边输出显示。。 展开
3个回答
展开全部
使用gets函数即可实现输入任意字符串。
1、gets函数:
原型:char * gets(char * buffer);
功能:从stdin流中读取字符串,直至读到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。换行符不作为读取串的内容,读取的换行符被转换为 \0 空字符,并以此结束字符串;
说明:当使用unicode宽字符文本时,请使用宽字符版本函数 _getws()。gets函数可以无限读取,不会判断上限,所以使用时应确保buffer的空间足够大,以便在执行读取操作时不发生溢出。gets函数在C11标准中被移除,改为更加安全的gets_s函数;
头文件:stdio.h;
返回值:若读入成功,返回与参数buffer相同的字符指针。若读入过程中遇到EOF或发生错误,返回NULL指针。所以当遇到返回值为NULL的情况时,应使用ferror或feof函数检查是发生错误还是遇到EOF。
2、例程:
#include <stdio.h>
int main(){
char buffer[5];//定义缓存字符数组buffer
gets(buffer);//用gets函数从stdin流中读入字符串,因为buffer长度是5,输入不能超过4个字符
printf("%s",buffer);//在stdout流中输出读入的字符串
return 0;
}
2013-12-18
展开全部
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define GRAW_LENGTH 50
void AppendChar(char*& pBuf, int& nBufLen, char ch)
{
int nOldLen = pBuf ? (int)_mbstrlen(pBuf) : 0;
if (nOldLen + 2 > nBufLen)
{
char* pNewBuf = (char*)malloc(nOldLen + GRAW_LENGTH);
memset(pNewBuf, 0, nOldLen + GRAW_LENGTH);
if (pBuf)
{
memcpy(pNewBuf, pBuf, nOldLen + 1);
free(pBuf);
}
pBuf = pNewBuf;
}
pBuf[nOldLen] = ch;
}
int main(int argc, char* argv[])
{
char ch;
char* pBuf = 0;
int nLen = 0;
do
{
ch = getch();
printf("%c", ch);
AppendChar(pBuf, nLen, ch);
} while (ch != 13);
printf("\n%s\n", pBuf);
if (pBuf) free(pBuf);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define GRAW_LENGTH 50
void AppendChar(char*& pBuf, int& nBufLen, char ch)
{
int nOldLen = pBuf ? (int)_mbstrlen(pBuf) : 0;
if (nOldLen + 2 > nBufLen)
{
char* pNewBuf = (char*)malloc(nOldLen + GRAW_LENGTH);
memset(pNewBuf, 0, nOldLen + GRAW_LENGTH);
if (pBuf)
{
memcpy(pNewBuf, pBuf, nOldLen + 1);
free(pBuf);
}
pBuf = pNewBuf;
}
pBuf[nOldLen] = ch;
}
int main(int argc, char* argv[])
{
char ch;
char* pBuf = 0;
int nLen = 0;
do
{
ch = getch();
printf("%c", ch);
AppendChar(pBuf, nLen, ch);
} while (ch != 13);
printf("\n%s\n", pBuf);
if (pBuf) free(pBuf);
return 0;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-12-18
展开全部
楼主的意思是不是在输入的时候不通过按回车键来结束字符串的输入就能把字符串读入程序?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询