用于在动态内存中使用数组的程序.需要等同于C.可以有人帮忙吗?
const int n = 6;
char **words = (char**) malloc(n *sizeof(char*));
for(int i = 0 ; i < n; i++)
words[i] = (char*)malloc( 50 * sizeof(int));
for(int i = 0; i < n; i++)
{
cin>>words[i];
}
cout<<endl;
for(int i = 0; i < n; i++)
{
if(words[i][0] == 'q')
cout<<words[i]<<endl;
}
Run Code Online (Sandbox Code Playgroud)
唯一的C++部件有cin和cout; 你可以轻松改变它们:
cin>>words[i];
Run Code Online (Sandbox Code Playgroud)
变
scanf("%s", words[i]);
Run Code Online (Sandbox Code Playgroud)
要么
gets(words[i]);
Run Code Online (Sandbox Code Playgroud)
而
cout<<words[i]<<endl;
Run Code Online (Sandbox Code Playgroud)
变
puts(words[i]);
Run Code Online (Sandbox Code Playgroud)
顺便说一句,在cin/ scanf/ gets你有一个潜在的缓冲区溢出,因为你为6个字符分配空间,但你接受任何长度的输入.你应该这样做:
scanf("%6s", words[i]);
Run Code Online (Sandbox Code Playgroud)
或者(更易于维护,因为它n直接使用)
fgets(words[i], n, stdin);
Run Code Online (Sandbox Code Playgroud)
(虽然这将包括\n字符串中的尾随)