求助大佬们
c语言吧
全部回复
仅看楼主
level 1
夕婷☁️
楼主
在这里我需要完成字符的逆序输出
我把scanf的字符都存在了a数组里,但是我必须先定义a数组的大小,然后我才能scanf,就会导致我a数组大小初始定义太小,太长的数组就无法转换,太大的又浪费空间
有没有一种办法让我在scanf时就能获得我输入的字符的长度后自动定义数组的长度再返回给scanf里
或者大佬们有没有其他方法来定义这种动态数组大小的方法
感谢大佬们
2023年05月14日 08点05分
1
level 1
猫耳柠檬ლ
有 自己用C语言可以实现类似于C++ string的功能
输入改成一个字符一个字符读到数组里
如果数组长度不够了再重新申请一个更大的数组
2023年05月14日 08点05分
3
猫耳柠檬ლ
另一方面gcc的扩展语法有类似的功能 %m 但是可移植性就不用考虑了
2023年05月14日 08点05分
夕婷☁️
好的,感谢大佬
2023年05月14日 08点05分
吧务
level 14
▫XeO2▫
scanf有一个扩展,%ms
char *str=NULL;
scanf("%ms",&str);
使用这个扩展,scanf会自动为str分配内存。
不过既然是扩展,就不能保证每个编译器和平台都支持它。通常的做法还是开一个足够大的数组,比如char str[1024];来保证输入大概率不会溢出
2023年05月14日 08点05分
4
夕婷☁️
好的,感谢大佬
2023年05月14日 08点05分
level 12
dsrvuu
开个足够大的就行了,不要这么强迫症,浪费一点没啥的
2023年05月14日 08点05分
5
夕婷☁️
好的,我知道了,谢谢大佬
2023年05月14日 08点05分
level 11
g495326
我在第一次学习的时候也有过这个需求,就是如何读一行,该行不确定有多少字符
2023年05月14日 15点05分
6
level 1
路过1只喵
这是个世纪难题,我有个不成熟的小建议,你可以弄个循环,在循环里用scanf,然后% s换成% c,用malloc每次循环开1个char的空间
2023年05月15日 01点05分
7
1