c语言先用scanf初始化了一个字符指针,之后再定义字符数组出现内存不可读,在线等,急求

问题描述

c语言先用scanf初始化了一个字符指针,之后再定义字符数组出现内存不可读,在线等,急求

#include
#include
int main()
{
char*s;
scanf("%s",s);
//printf("%sn",s);
//int n = strlen(s);
//printf("%dn",n);
char ret[56];
return 0;
}

解决方案

s只是指针变量,没有分配内存
char*s;
s = malloc(size);
scanf("%s",s);

解决方案二:

你要知道指针是指向内存中的一块内存地址,char*s;, 而你往指针里面存放数据到底是什么意图?

解决方案三:

#include
int main()
{
char a[10];
char *s=a;

scanf("%s",a);

printf("%sn", a);
printf("%sn",s);

return 0;

}


解决方案四:

char *s;
是指定义了一个字符型指针变量,它(s),只能用于存放地址。
char a[10];
s = a;
是因为a是一个数组,而数组名表示数组的首地址,所以可以这样使用。
但并不是表示s可以存放a中的所有值。

解决方案五:

修改后的代码:

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

int main()
{
char*s;
s=(char *)malloc(10*sizeof(char));   //申请10个字符的空间来存储字符串.
scanf("%s",s);
printf("%sn",s);
int n = strlen(s);
printf("%dn",n);
char ret[56];
return 0;
}
时间: 2024-11-03 06:57:40

c语言先用scanf初始化了一个字符指针,之后再定义字符数组出现内存不可读,在线等,急求的相关文章

c语言-C语言关于字符指针变量和字符数组的说法

问题描述 C语言关于字符指针变量和字符数组的说法 下列关于字符指针变量和字符数组的说法错误的是 A)字符指针变量的值可以变化 B)字符数组的值可以变化 C)字符指针变量代表了一个地址 D)字符数组代表了一个地址 ====答案选B,求解释? 解决方案 选择B.字符数组相当于指针常量. 解决方案二: 数组定义时系统给开辟内存单元,数组名相当于数组的开始地址是不能变化的 解决方案三: C语言字符指针和字符数组C语言中,为什么字符串可以赋值给字符指针变量字符数组和字符指针

ssh做的一个web项目,添加xfire的webservice支持后报错,小弟急求

问题描述 由于我们提供的接口有点多,我就想在原来的工程上添加xfire的webservice支持,谁知道,添加了报错,看了不少帖子说是spring的jar包和spring-.1.2.6.jar冲突,然后把后面的jar包删除,不包那个错,[dtss]2015-01-1517:35:39,346ERROR[main]org.springframework.ws.transport.http.MessageDispatcherServlet.initServletBean-290|Contextini

调用C++dll,需要传入一个函数指针,函数参数含有数组指针,用于传回数据,怎么老说我访问内存非法呀.

问题描述 C++dll代码回掉函数类型:voidcallback(BYTE*data,intnlen)//DLL设置回调函数voidSetCallBackFunc(CALL_BACK_FUNCcallback){m_callback=callback;}//dll调用回掉函数向C#传回数据voidStartDll(){BYTEbtData[100];for(bytei=0;i<100;i++){btData[i]=i;}m_callback(btData,100);//将数据通过回掉函数传回C#

c语言scanf( )函数的一个问题

问题描述 c语言scanf( )函数的一个问题 #include int main() { int s; while(1) { printf("请输入:"); scanf("%d",&s); printf("%d ",s); } /*当给s从键盘接受字母的时候,该循环会出现不同, 原先(正常输入证书的时候)是等待你输入了s过后才 会输出结果,但现在(给s从键盘接受字母的时候)不 需要等待直接死循环下去. 我想请教各位长辈,这是什么原因导致

c语言-C语言scanf()语句的一个问题

问题描述 C语言scanf()语句的一个问题 C语言scanf()什么时候用&,什么时候又不用?为什么要用&,这样用的好处是什么? 解决方案 &的作用是取地址,对于简单变量,比如int float等就需要.字符数组.指针,本身就是指针了,就不需要.不用取地址,函数内怎么把得到的结果再返回主程序呢? 解决方案二: C语言中关于scanf()函数返回值问题C语言scanf问题C语言中scanf的问题 解决方案三: &就是相当于地址的意思,你从键盘中输入数或赋值是要暂时存到一个地

c语言-【C语言】用scanf赋值给带指针的字符串

问题描述 [C语言]用scanf赋值给带指针的字符串 我希望是输入几个单词之后,这几个单词成为一个字符串,但是变异之后仍然有问题. #include<stdio.h> #include<stdlib.h> #include<string.h> int main(int argc, char *argv[]) { int n; printf("Number of words: "); scanf("%d", &n); con

以一个链表指针作参数传入一个函数里,若此时链表为空,则初始化链表,为什么在主函数中不能用?

问题描述 以一个链表指针作参数传入一个函数里,若此时链表为空,则初始化链表,为什么在主函数中不能用? #include using namespace std; typedef struct Node { int age; struct Node* next; }LIST; void addList1(LIST* pHead,int x)//链表结尾加节点 { LIST* pM=new LIST();//新节点 pM->age=x; pM->next=NULL; if(pHead==NULL)

.net-C#调用C语言程序遇到scanf

问题描述 C#调用C语言程序遇到scanf 怎么才能让程序自动输入一个值,并且得到返回的结果呢? Process.start之后然后该做什么啊? 解决方案 Process有一个等待结束的方法可以调用. 请查看MSDN的说明. http://msdn.microsoft.com/zh-cn/library/system.diagnostics.process_methods(v=vs.110).aspx 自己找根鱼竿,不要等着喂鱼.

ascii-C语言文件读写和类型转换的一个小问题

问题描述 C语言文件读写和类型转换的一个小问题 #include <stdio.h> #include <Windows.h> main() { FILE *f; int c; errno_t err = fopen_s(&f,"E:\workspace\TVPLAY\data\diffFrame\txts\file2.txt","r"); if (err) { printf("can't open filen")